Articles of language design

Perché Array non è un tipo generico?

Array è dichiarata come segue: public abstract class Array : ICloneable, IList, ICollection, IEnumerable { Mi chiedo perché non lo è: public partial class Array : ICloneable, IList, ICollection, IEnumerable { Quale sarebbe il problema se fosse stato dichiarato un tipo generico? Se fosse un tipo generico, avremmo ancora bisogno di quello non generico? E […]

Perché le variabili dichiarate in “prova” non sono incluse in “catch” o “finally”?

In C # e in Java (e probabilmente anche in altri linguaggi), le variabili dichiarate in un blocco “try” non sono nell’ambito dei corrispondenti blocchi “catch” o “finally”. Ad esempio, il seguente codice non viene compilato: try { String s = “test”; // (more code…) } catch { Console.Out.WriteLine(s); //Java fans: think “System.out.println” here instead […]

Chiamare il metodo varargs Java con un argomento null singolo?

Se ho un metodo Java vararg foo(Object …arg) e chiamo foo(null, null) , ho sia arg[0] che arg[1] come null s. Ma se chiamo foo(null) , arg stesso è nullo. Perché sta succedendo? Come dovrei chiamare foo modo che foo.length == 1 && foo[0] == null sia true ?

Perché non è ansible avere più interfacce in un carattere jolly limitato generico?

So che ci sono tutti i tipi di proprietà contro-intuitive dei tipi generici di Java. Eccone uno in particolare che non capisco e che spero che qualcuno possa spiegarmi. Quando si specifica un parametro di tipo per una class o un’interfaccia, è ansible associarlo in modo che debba implementare più interfacce con public class Foo […]

Perché dobbiamo definire sia == che! = In C #?

Il compilatore C # richiede che ogni volta che un tipo personalizzato definisce l’operatore == , deve anche definire != (Vedi qui ). Perché? Sono curioso di sapere perché i progettisti lo abbiano ritenuto necessario e perché il compilatore non possa impostare automaticamente un’implementazione ragionevole per entrambi gli operatori quando solo l’altro è presente. Ad […]

Sintassi per riferimenti universali

Questo è un riferimento di rvalue: void foo(int&& a); Non si lega ai lvalue: int i = 42; foo(i); // error Questo è un riferimento universale: template void bar(T&& b); Si lega ai rvalues ​​e si lega anche ai lvalue: bar(i); // okay Questo è un riferimento di rvalue: template struct X { void baz(T&& […]

Utilizzo di chiavi variabili per accedere ai valori negli oggetti JavaScript

Il codice: function updateDashboardData() { $.getJSON(“includes/system/ajaxDataInterface.php”, {recordcount:1}, function(data) { $(‘.stationContainer’).each(function(data) { var bsID = $(this).attr(“id”); var bsStatus = $(this).children(‘.stationStatus’); alert(data[bsID][0].time); bsStatus.find(‘.bs_maxHandsets’).text(data[bsID][0].maxHandsets); bsStatus.find(‘.bs_time’).text(data[bsID][0].time); }); }); } I dati dell’object: { “A5A50000”: [{ “bsid”: “A5A50000”, “chanCount”: 17, “time”: “2009-05-27 16:36:45”, “avgInterference”: 1.711765, “maxInterference”: 4.97, “avgHandsets”: 205.1176, “maxHandsets”: 315, “avgCalls”: 6.4118, “maxCalls”: 13, “avgCBA”: 3868.98059, “maxCBA”: 7463, “sumSuccessCBA”: […]

Perché le variabili locali richiedono l’inizializzazione, ma i campi no?

Se creo un bool all’interno della mia class, solo qualcosa come il bool check , è impostato su false. Quando creo lo stesso bool all’interno del mio metodo, il bool check (invece che all’interno della class), ottengo un errore “uso del controllo della variabile locale non assegnato”. Perché?

Perché un array non è assegnabile a Iterable?

con Java5 possiamo scrivere: Foo[] foos = … for (Foo foo : foos) o semplicemente usando un Iterable nel ciclo for. Questo è molto utile. Tuttavia non è ansible scrivere un metodo generico per iterabile come questo: public void bar(Iterable foos) { .. } e chiamandolo con un array poiché non è un Iterable: Foo[] […]

Perché Java non consente sottoclassi generiche di Throwable?

Secondo Java Language Sepecification , 3a edizione: È un errore in fase di compilazione se una class generica è una sottoclass diretta o indiretta di Throwable . Vorrei capire perché questa decisione è stata presa. Cosa c’è di sbagliato con le eccezioni generiche? (Per quanto ne so, i generici sono semplicemente zucchero sintattico in fase […]