RCommon C# Py Differenze

un saluto a tutti,
(ovviamente più si va avanti e più nascono domande)

import Rhino as rh

def Def1():
    go = rh.Input.Custom.GetObject()
    go.GeometryFilter = rh.DocObjects.ObjectType.Point
    go.Get()

Def1()
using rh = Rhino;
Main();

void Main()
{
    var pt = new rh.Input.Custom.GetObject { GeometryFilter = rh.DocObjects.ObjectType.Point };
    pt.Get();
}

avevo provato ad utilizzare anche in Python la stessa sintassi usata per C#
passando la seconda riga insieme alla prima all’interno delle parentesi graffe
(ma come sembra non dipende da RCommon ma è una peculiarità di C# ?)

questa sintassi di C# mi ha fatto riflettere su una cosa:
si è parlato che in RCommon quando ci sono le parentesi
tonde significa che si ha a che fare con dei Metodi giusto?
ma rh.Input.Custom.GetObject() che è una Classe,
in questo caso viene richiamata come Costruttore?

ps come ultima cosa:
in C# la tipizzazione del tipo var per la variabile pt
va a sostituire tutte le altre tipi di tipizzazioni,
così non occupa maggior memoria?

Ciao Salvio,
Come tu stesso hai scritto, un nome che termina con parentesi tonde è un metodo di una classe il quale può contenere qualsiasi cosa, ivi compreso del codice per costruire oggetti.

RC implementate in. Net seguono necessariamente la sintassi C#. Diversamente avremmo dovuto utilizzare linguaggi meno userfriendly.

l’utilizzo della parola chiave var in C# non richiede più memoria rispetto alla dichiarazione esplicita del tipo. Durante la compilazione, il compilatore determina il tipo esatto della variabile e genera lo stesso codice Intermediate Language (IL) che avrebbe generato se il tipo fosse stato dichiarato esplicitamente

Quindi, non c’è differenza in termini di utilizzo della memoria tra i due modi di dichiarare una variabile.

var numero = 5; // Compilato come int numero = 5;
int numeroEsplicito = 5; // Nessuna differenza in memoria rispetto a ‘var’

Copilot

1 Mi Piace

ciao Luca,

era il ragionamento che avevo fatto:

rh.Input.Custom.GetObject { GeometryFilter = rh.DocObjects.ObjectType.Point };

ma ho provato ad utilizzare questa sintassi anche in Py ma non l’accetta :thinking:


ok perfetto grazie :+1:

1 Mi Piace
using System;
class Program
{
    public static void Main(string[] args)
    {
        string a = "abc";
        Console.WriteLine( a );

        var b = "def";
        Console.WriteLine( b );
    }
}

ma alla fine se anche con la tipizzazione generica di var ad inizio variabile funziona allo stesso modo
a questo punto credo che Python utilizza questo sistema delle variabili tipizzate con var

in effetti avendo questa possibilità a disposizione, (tranne che per una conoscenza personale)
diventa superfluo andare a specificare tante cose, di cui poi se ne può fare a meno. . .

Io uso poco var, se so già il tipo.