To jest stara wersja strony!


Typy wartościowe mają wersję typu umożliwiającą przypisanie wartości null.

Deklaracja:

 typ? nazwa = null;

Przykład:

int? a = null;
int? b = 42;
double? x = null;
bool? czy_prawda = null;
 
//int k = null; // ta deklaracja nie jest dozwolona

Typ wyliczeniowy to typ całkowity, którego wartościami mają przypisane nazwy (wyliczanka).

Deklaracja typu:

 enum nazwa_typu
 {
    lista_nazw_
 };

Przykład:

enum Dni 
{
    Poniedziałek,
    Wtorek,
    Środa,
    Czwartek,
    Piątek,
    Sobota,
    Niedziela
}
  • słowo enum definiuje nowy typ wyliczeniowy
  • deklaracja typu wykonywana jest w zakresie przestrzeni nazw lub klasy
  • lista elementów reprezentuje kolejne wartości całkowite od 0
enum Dni 
{
    Poniedziałek,
    Wtorek,
    Środa,
    Czwartek,
    Piątek,
    Sobota,
    Niedziela
}
public enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}
 
public class EnumConversionExample
{
    public static void Main()
    {
        Season a = Season.Autumn;
        Console.WriteLine($"Integral value of {a} is {(int)a}");  // output: Integral value of Autumn is 2
 
        var b = (Season)1;
        Console.WriteLine(b);  // output: Summer
 
        var c = (Season)4;
        Console.WriteLine(c);  // output: 4
    }
}
enum Kolory 
{
    Zielony = 5,
    Czerwony,
    Czarny = 100,
}
  • Struktura to typ wartościowy przechowujący elementy różnego typu.
  • pola - elementy struktury identyfikowane nazwami
  • ułatwiają organizację danych - struktura jest obiektem
  • struktura może być argumentem metody oraz typem zwracanym metody

Składnia

struct nazwa_typu 
{
   typ1 nazwa_pola1;
   typ2 nazwa_pola2;
   ...
};
Osoba student;
Osoba pracownik = new Osoba();
s.średnia = 5.0;
string s = s.nazwisko;
  • struktrury zawierają pola, dostęp za pomocą kropki
  • pola domyślnie są publiczne
  • struktura może posiadać własne metody - ale o tym więcej na programowaniu obiektowym
using System;
namespace Struktury
{
    class Program
    {
        static void Main(string[] args)
        {
            Samochody auto_1 = new Samochody();
            Samochody auto_2 = new Samochody();
            // specyfikacja pierwszego samochodu
            auto_1.PobierzWartosc("Audi", "RS6", 4200);
            // specyfikacja drugiego samochodu
            auto_2.PobierzWartosc("Ferrari", "F355", 3500);
            auto_1.WypiszWartosci();
            Console.WriteLine();
            auto_2.WypiszWartosci();
            Console.ReadKey();
            // Wynik działania programu
            //Marka: Audi
            //Model: RS6
            //Pojemnosc: 4200
            //Marka: Ferrari
            //Model: F355
            //Pojemnosc: 3500
        }
        struct Samochody
        {
            private string marka;
            private string model;
            private int pojemnosc;
            public void PobierzWartosc(string mar, string mod, int poj)
            {
                marka = mar;
                model = mod;
                pojemnosc = poj;
            }
            public void WypiszWartosci()
            {
                Console.WriteLine("Marka: {0}", marka);
                Console.WriteLine("Model: {0}", model);
                Console.WriteLine("Pojemnosc: {0}", pojemnosc);
            }
        }
    }
}
struct student
{
int numer ;
char nazwisko [ 5 ] ;
} ;
struct student janek = { 1 3 , " ABC " } ;
struct student franek = { 5 , { ’A ’ , ’B ’ , ’C ’ } } 

Konstruktor to metoda struktury o takiej samej nazwie jak nazwa struktury. Służy do inicjowania wartości pól.

struct Student
{
int numer ;
char nazwisko [ 5 ] ;
 
public Student(int numer, string nazwisko)
{
   numer = numer;
   nazwisko = nazwisko;
}
} ;
 
Student janek = new Student(1, "Nowak");
kod tutaj