VariableEnumerator.Current Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene el objeto Variable actual de la colección.
public:
property Microsoft::SqlServer::Dts::Runtime::Variable ^ Current { Microsoft::SqlServer::Dts::Runtime::Variable ^ get(); };
public Microsoft.SqlServer.Dts.Runtime.Variable Current { get; }
member this.Current : Microsoft.SqlServer.Dts.Runtime.Variable
Public ReadOnly Property Current As Variable
Valor de propiedad
Objeto Variable actual.
Ejemplos
En el ejemplo de código siguiente se agrega una variable al paquete. En el ejemplo de código se usan varios métodos para buscar la variable e imprimir el nombre, el valor y el espacio de nombres.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
namespace Adding_Variables
{
class Program
{
static void Main(string[] args)
{
Application app = new Application();
// Load a sample package that contains a variable that sets the File Name.
Package pkg = app.LoadPackage(@"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx", null);
Variables pkgVars = pkg.Variables;
Variable myVar = pkg.Variables.Add("myCustomVar", false, "User", "3");
// See if the variable is in the collection now.
Boolean hasMyVar = pkg.Variables.Contains("myCustomVar");
Console.WriteLine("The variable was found? {0}", hasMyVar);
// Loop over the collection using foreach keyword.
foreach (Variable pkgVar in pkgVars)
{
// Only print variables from the User namespace.
if (pkgVar.Namespace == "User")
{
Console.WriteLine("Variable: {0}, {1}", pkgVar.Name, pkgVar.Value.ToString());
}
}
Console.WriteLine("---------------------------");
// Loop over the collection using the Enumerator.
VariableEnumerator myEnum = pkg.Variables.GetEnumerator();
int i = 0;
while ((myEnum.MoveNext()) && (myEnum.Current != null))
// Again only show User namespace variables.
if (myEnum.Current.Namespace == "User")
{
Console.WriteLine("[{0}] {1}, {2}", i++, myEnum.Current.Name, myEnum.Current.Namespace);
}
myEnum.Reset();
Console.WriteLine("---------------------------");
//Using the Item method syntax of [x], obtain the
// first entry in the collection.
myVar = pkgVars[0];
Console.WriteLine("The name and namespace of the first variable is: {0}, {1}", myVar.Name, myVar.Namespace);
String nameOfFirstItem = pkgVars[0].Name;
Console.WriteLine("The name of the first variable is: {0}", nameOfFirstItem);
//}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Namespace Adding_Variables
Class Program
Shared Sub Main(ByVal args() As String)
Dim app As Application = New Application()
' Load a sample package that contains a variable that sets the File Name.
Dim pkg As Package = app.LoadPackage("C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx",Nothing)
Dim pkgVars As Variables = pkg.Variables
Dim myVar As Variable = pkg.Variables.Add("myCustomVar",False,"User","3")
' See if the variable is in the collection now.
Dim hasMyVar As Boolean = pkg.Variables.Contains("myCustomVar")
Console.WriteLine("The variable was found? {0}", hasMyVar)
' Loop over the collection using foreach keyword.
Dim pkgVar As Variable
For Each pkgVar In pkgVars
' Only print variables from the User namespace.
If pkgVar.Namespace = "User" Then
Console.WriteLine("Variable: {0}, {1}", pkgVar.Name, pkgVar.Value.ToString())
End If
Next
Console.WriteLine("---------------------------")
' Loop over the collection using the Enumerator.
Dim myEnum As VariableEnumerator = pkg.Variables.GetEnumerator()
Dim i As Integer = 0
While (myEnum.MoveNext()) &&(myEnum.Current <> Nothing)
Console.WriteLine("[{0}] {1}, {2}",i = Console.WriteLine("[{0}] {1}, {2}",i + 1
End While
myEnum.Reset()
Console.WriteLine("---------------------------")
'Using the Item method syntax of [x], obtain the
' first entry in the collection.
myVar = pkgVars(0)
Console.WriteLine("The name and namespace of the first variable is: {0}, {1}", myVar.Name, myVar.Namespace)
Dim nameOfFirstItem As String = pkgVars(0).Name
Console.WriteLine("The name of the first variable is: {0}", nameOfFirstItem)
'}
End Sub
End Class
End Namespace
Salida del ejemplo:
¿Se encontró la variable? Verdadero
Variable: myCustomVar, 3
---------------------------
[0] myCustomVar, User
---------------------------
El nombre y el espacio de nombres de la primera variable son: CancelEvent, System
El nombre de la primera variable es: CancelEvent
Comentarios
Después de crear un enumerador o después de una llamada al Reset
método , se MoveNext
debe llamar al método para avanzar el enumerador al primer elemento de la colección antes de que el enumerador pueda leer el valor de la Current propiedad; de lo contrario, Current no está definido y se produce una excepción.
Currenttambién produce una excepción si se devuelve false
la última llamada a MoveNext
, que indica el final de la colección.
Currentno mueve la posición del enumerador y las llamadas consecutivas para devolver el mismo objeto hasta que MoveNext
se llama a Current o Reset
.
Un enumerador sigue siendo válido mientras la colección permanezca inalterada. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador se invalida y se convierte en irrecuperable; por lo tanto, la siguiente llamada a MoveNext
o Reset
produce una InvalidOperationException
excepción . Sin embargo, si la colección se modifica entre las llamadas a MoveNext
y Current, Current devuelve el elemento en el que se establece, incluso si el enumerador se ha invalidado.