Anda mungkin membingungkan sintaks serupa tetapi berbeda untuk kesalahan penembakan vs peristiwa informasi dari Komponen Skrip (tugas aliran data) versus Tugas Skrip (alur kontrol). Intellisense untuk Komponen menunjukkan bahwa parameternya adalah pbCancel sedangkan fireAgain sesuai dengan parameter Tugas Informasi.
Komponen Skrip
Contoh Komponen Skrip C#
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
bool cancel = false;
bool fireAgain = false;
this.ComponentMetaData.FireInformation(0, "My sub", "info", string.Empty, 0, ref fireAgain);
this.ComponentMetaData.FireError(0, "My sub", "error", string.Empty, 0, out cancel);
}
Komponen VB
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim cancel As Boolean
Dim fireAgain As Boolean
Me.ComponentMetaData.FireInformation(0, "my sub", "info", String.Empty, 0, fireAgain)
Me.ComponentMetaData.FireError(0, "I hate vb", "Error", String.Empty, 0, cancel)
End Sub
Tidak perlu secara eksplisit menentukan bahwa suatu parameter adalah Dengan Referensi karena hal itu tampaknya dilakukan dalam definisi versus persyaratan C# untuk menentukannya juga pada pemanggilan.Klarifikasi ByRef vs ByVal
Tugas Skrip
C#
public void Main()
{
bool fireAgain = false;
this.Dts.Events.FireInformation(0, "my sub", "info", string.Empty, 0, ref fireAgain);
// Note, no cancel available
this.Dts.Events.FireError(0, "my sub", "error", string.Empty, 0);
}
VB
Public Sub Main()
Dim fireAgain As Boolean = False
Me.Dts.Events.FireInformation(0, "my sub", "info desc", String.Empty, 0, fireAgain)
Me.Dts.Events.FireError(0, "my sub", "error desc", String.Empty, 0)
Dts.TaskResult = ScriptResults.Success
End Sub
Ringkasan
- C# mengharuskan Anda untuk menentukan
ref
danout
kata kunci. Mereka bukan sinonim - VB memungkinkan Anda melakukan apa saja
- Acara kesalahan dalam Komponen memiliki parameter batal