A... Befejezés utasítással (Visual Basic)
Olyan utasítások sorozatát hajtja végre, amelyek ismétlődően egyetlen objektumra vagy struktúrára hivatkoznak, így az utasítások egyszerűsített szintaxist használhatnak az objektum vagy struktúra tagjaihoz való hozzáféréskor. Struktúra használata esetén csak a tagok értékeit olvashatja el, vagy metódusokat hívhat meg, és hibaüzenet jelenik meg, ha egy utasításban With...End With
használt struktúra tagjaihoz próbál értékeket rendelni.
Syntax
With objectExpression
[ statements ]
End With
Részek
Időszak | Definíció |
---|---|
objectExpression |
Szükséges. Egy objektumnak kiértékelt kifejezés. A kifejezés tetszőlegesen összetett lehet, és csak egyszer lesz kiértékelve. A kifejezés bármilyen adattípusra kiértékelhető, beleértve az elemi típusokat is. |
statements |
Opcionális. Egy vagy több olyan állítás között With End With , amely hivatkozhat egy objektum tagjaira, amelyeket a kiértékelés objectExpression során állítottak elő. |
End With |
Szükséges. Leállítja a blokk definícióját With . |
Megjegyzések
A használatával With...End With
utasítássorozatokat hajthat végre egy adott objektumon anélkül, hogy többször meg kéne adnia az objektum nevét. With
Az utasításblokkon belül megadhatja az objektum egy tagját egy ponttal kezdődően, mintha az With
utasításobjektum előzte volna meg.
Ha például több tulajdonságot szeretne módosítani egy objektumon, helyezze a tulajdonság-hozzárendelési utasításokat a With...End With
blokkba, és csak egyszer hivatkozzon az objektumra az egyes tulajdonság-hozzárendelések esetében.
Ha a kód több utasításban is hozzáfér ugyanahhoz az objektumhoz, az alábbi előnyöket élvezheti az With
utasítás használatával:
Nem kell többször kiértékelnie egy összetett kifejezést, és nem kell hozzárendelnie az eredményt egy ideiglenes változóhoz, hogy többször hivatkozzon a tagokra.
A kód olvashatóbbá tétele az ismétlődő minősítő kifejezések eltávolításával.
Az adattípus objectExpression
lehet bármilyen osztály- vagy struktúratípus, vagy akár egy Visual Basic elemi típus, például Integer
. Ha objectExpression
nem objektumot eredményez, akkor csak a tagok értékeit olvashatja, vagy metódusokat hívhat meg, és hibaüzenet jelenik meg, ha egy utasításban With...End With
használt struktúra tagjaihoz próbál értékeket rendelni. Ez ugyanaz a hiba, amely akkor jelenik meg, ha olyan metódust hív meg, amely visszaadott egy struktúrát, és azonnal hozzáfért, és hozzárendelt egy értéket a függvény eredményének egy tagjához, például GetAPoint().x = 1
. A probléma mindkét esetben az, hogy a struktúra csak a hívásveremen létezik, és ezekben a helyzetekben a módosított struktúratagok nem írhatnak olyan helyre, hogy a program bármely más kódja megfigyelhesse a változást.
A objectExpression
kiértékelés egyszer történik, a blokkba való belépéskor. A blokkon belülről nem lehet újra hozzárendelni objectExpression
a With
elemet.
Egy With
blokkon belül csak a megadott objektum metódusaihoz és tulajdonságaihoz férhet hozzá anélkül, hogy azokat minősíteni szeretné. Más objektumok metódusait és tulajdonságait is használhatja, de ezeket az objektumnevekkel kell minősítenie.
Egy utasítást elhelyezhet With...End With
egy másikban. A beágyazott With...End With
utasítások zavaróak lehetnek, ha a hivatkozott objektumok nem egyértelműek a környezetből. Meg kell adnia egy teljes körű hivatkozást egy külső With
blokkban lévő objektumra, amikor az objektumra egy belső With
blokkból hivatkozik.
A blokkon kívülről nem ágazhat el utasításblokkba With
.
Ha a blokk nem tartalmaz hurkot, az utasítások csak egyszer futnak. Különböző típusú vezérlőstruktúrák ágyazhatók be. További információ: Beágyazott vezérlőstruktúrák.
Feljegyzés
A kulcsszót objektum With
inicializálókban is használhatja. További információkért és példákért lásd : Object Initializers: Named and Anonymous Types and Anonymous Types.
Ha csak a With
példányosított objektum tulajdonságainak vagy mezőinek inicializálására használ blokkot, fontolja meg inkább az objektum inicializálójának használatát.
1. példa
Az alábbi példában minden With
blokk egy utasítássorozatot hajt végre egyetlen objektumon.
Private Sub AddCustomer()
Dim theCustomer As New Customer
With theCustomer
.Name = "Coho Vineyard"
.URL = "http://www.cohovineyard.com/"
.City = "Redmond"
End With
With theCustomer.Comments
.Add("First comment.")
.Add("Second comment.")
End With
End Sub
Public Class Customer
Public Property Name As String
Public Property City As String
Public Property URL As String
Public Property Comments As New List(Of String)
End Class
2. példa
Az alábbi példa utasításokat ágyaz be With…End With
. A beágyazott With
utasításban a szintaxis a belső objektumra hivatkozik.
Dim theWindow As New EntryWindow
With theWindow
With .InfoLabel
.Content = "This is a message."
.Foreground = Brushes.DarkSeaGreen
.Background = Brushes.LightYellow
End With
.Title = "The Form Title"
.Show()
End With
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: