Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Con blocco equivalente in C #?                                      15 risposte                          
  •     
    

La C # hanno alcun equivalente per VB6

With 
End With
È stato utile?

Soluzione

Non c'è niente di molto equivalente, ma C # 3 acquisito la capacità di proprietà impostate per la costruzione:

var person = new Person { Name = "Jon", Age = 34 };

e collezioni:

var people = new List<Person>
{
    new Person { Name = "Jon" },
    new Person { Name = "Holly"}
};

Non è sicuramente un sostituto per tutti usi di With, ma vale la pena conoscere per alcuni di loro.

Altri suggerimenti

C # non ha alcuna sintassi equivalente. Il più vicino sono inizializzatori oggetto, ma non sono la stessa cosa:

var obj = new SomeThing {
    Height = 100,
    Text = "Hello, World",
    ForeColor = System.Drawing.Color.Green
}

No.

Cosa si avvicina sono oggetti e lista inizializzatori .

Person p = new Person()
{
    FirstName = "John",
    LastName = "Doe",
    Address = new Address()
    {
        Street = "1234 St.",
        City = "Seattle"
    }
};

E non è affatto un equivalente, tuttavia, se è la digitazione si sta cercando di ridurre, si può fare.

{
  var o = myReallyReallyReallyReallyLongObjectName;
  o.Property1 = 1;
  o.Property2 = 2;
  o.Property3 = 3;
}

Non c'è C # equivalenti a With parola chiave di Visual Basic.

Non v'è alcun equivalente in c # -> Per saperne di più qui nei commenti http://blogs.msdn.com/b/csharpfaq/archive/2004/03/11/why-doesn-tc-have- vb-net-s-with-operator.aspx

Un quasi equivalente sarebbe chiamare un metodo che è un membro di una classe. Non è necessario dare un nome più volte l'oggetto che possiede dentro i membri della classe - è implicita nel fatto che la funzione è un membro, chiamato per una determinata istanza.

dubito un equivalente diretto di Con / End With è una buona idea in C # per questo motivo. Se ti sei trovato a digitare il nome di un oggetto più e più volte in un determinato ambito, è un'indicazione buona che il codice in questione sarebbe un buon metodo sulla classe dell'oggetto.

Non v'è alcun equivalente diretto. È possibile impostare le proprietà per la costruzione, come altri hanno spiegato, oppure è possibile assegnare la vostra espressione ad una variabile con un nome breve. Il seguente dovrebbe essere semanticamente equivalente:

With <expression>
    .something ...
    .somethingElse ...
End With

var w = <expression>;
w.something ...
w.somethingElse ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top