.NET CLS ( Specifica lingua comune ) consente a un programmatore di scrivere codice in un linguaggio .NET e sa con certezza che tutti gli altri linguaggi .NET possono interagire in sicurezza e persino utilizzare dati e metodi da il progetto originale.
In Troelsen e Japikse's, C # 6.0 e .NET 4.6 Framework , gli autori scrivono che non puoi avere Parametri CLS non conformi o valori di ritorno per un metodo, ma è possibile avere variabili CLS non interne un metodo, tuttavia il metodo è ancora conforme a CLS.
Ad esempio (pagina 19),
class Calc
{
// Exposed unsigned data is not CLS compliant!
public ulong Add(ulong x, ulong y)
{
return x + y;
}
}
non è compatibile con CLS a causa dei parametri ulong
. Ma (pagina 20),
If you were to only make use of unsigned data internally in a method, as follows:
class Calc
{
public int Add(int x, int y)
{
// As this ulong variable is only used internally,
// we are still CLS compliant.
ulong temp = 0;
...
return x + y;
}
}
you have still conformed to the rules of the CLS and can rest assured that all .NET languages are able to invoke the Add() method.
Quello che non capisco è che cosa succede se la variabile non conforme CLS interagisce con uno dei parametri che viene restituito nel risultato del metodo? Questo non romperebbe la non conformità?
Grazie.
La mia intuizione è che per questo esempio, l'unica cosa che "spezzerebbe" la conformità del tipo CLS int
sarebbe se un operatore matematico causasse un overflow w / la variabile int
- che sarebbe quindi un problema durante la compilazione o il runtime, non con la conformità del CLS.