2012-12-01 14 views
7

Piszę aplikację wykorzystującą Roslyn do syntaktycznego i semantycznego analizowania kodu źródłowego C#. Dla każdego typu zdefiniowanego w analizowanym kodzie źródłowym chciałbym zapisać, czy jest to typ odniesienia (klasa), typ wartości (struct) czy interfejs.Jaki jest termin (oficjalny) dla typu?

Jaki jest właściwy/oficjalny termin dla typu?

Przykład:

class A 
{ 
    //This type's type (A's type) is 'class' (i.e. a reference type). 
} 
+0

Haskell nazywa ten rodzaj rzeczy "dobrymi". Może to jest podobne w .NET. – siride

+0

Nie jestem pewien, czy istnieje oficjalny termin dla kolekcji, która obejmuje klasę, interfejs, enum, typ itp. Nazwałbym je strukturami, ale wstawiłbym przypis dolny/słowniczek, aby zdefiniować moje użycie tego terminu w kontekście kontekstu dokument. – JohnLBevan

+0

to pytanie wymaga Jon Skeet :)! –

Odpowiedz

11

Jeśli chcesz poznać oficjalną nazwę, zajrzeć do oficjalnego źródła: specyfikacji języka C#. Cytowanie stamtąd (§1.3 Rodzaje i zmienne; podkreślenie moje):

Istnieją dwa rodzaje typów w C#: rodzajów i typów wartości referencyjnych. [...]

Typy wartości C# są dalej dzielone na typy proste, typy wyliczeniowe, typy struktur i typy zerowalne, a typy odniesienia C# dzielą się dalej na typy klas, typy interfejsów, typy tablic i typy delegatów.

Następnie znajduje się tabela, która opisuje te grupy rodzajów jak kategorii, a także ten cytat:

Pięć z C# 's kategoriach typów są definiowane przez użytkownika: typy klasa, struct typy, typy interfejsów, typy wyliczeniowe i typy delegatów.

Chociaż później (w §4 Types):

Typy w języku C# są podzielone na dwie główne kategorie: typów wartości i typów referencyjnych.

Podsumowując, specyfikacja nazywa je kategoriami typów, chociaż użycie tego terminu nie jest bardzo spójne.

+0

Świetna odpowiedź! Osobiście użyłbym słowa "rodzaj", gdy mówię o jednym rodzaju i kategorii, mówiąc o grupie typów (tj. Kategoria typów to grupa rodzajów tego samego rodzaju). – lesderid

3

W typie typ typ jest zwykle nazywany rodzaj. To przede wszystkim opisuje formę parametryzacji typu, choć może być również stosowana do innych klasyfikacji. Ale nie jestem pewien, czy odnosi się to w sposób naturalny do tego rodzaju klasyfikacji, o której tu mowa. Wygląda na to, że C# również nie ma "oficjalnego" terminu.

2

Widziałem, jak używamy "rodzaju" w kodzie źródłowym Roslyn, ponieważ "istnieje 5 możliwych rodzajów typów, które można zadeklarować". Jednak nie sądzę, aby istniało oficjalne określenie tego terminu. Używałbym "rodzaju" lub "rodzaju".

Powiązane problemy