To jest stara wersja strony!
Typ pusty
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
Typ wyliczeniowy to odmiana typu całkowitego, którego wartości mają przypisane nazwy (wyliczanka).
Deklaracja typu:
enum nazwa_typu { element1, element2, ... };
Przykład:
enum Kolory { Czerwony , Niebieski , Zielony , Czarny }
Cechy
- słowo
enum
definiuje nowy typ wyliczeniowy - deklaracja typu umieszczana jest w zakresie przestrzeni nazw lub klasy
- lista elementów reprezentuje kolejne wartości całkowite od 0
internal class Program { enum Kolory { Czerwony, Niebieski, Zielony, Czarny } static void Main(string[] args) { // deklaracja zmiennej Kolory kolor1; // przypisanie wartości kolor1 = Kolory.Czerwony; Console.WriteLine("Zmienna zaweiera wartość {0}" , kolor1); kolor1++; Console.WriteLine("Następny kolor to {0}", kolor1); } }
Przykład użycia
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 } }
Przypisanie wartości
enum Kolory { Zielony = 5, Czerwony, Czarny = 100, }
Struktury
- 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
Deklaracja typu strukturalnego
Składnia
struct nazwa_typu { typ1 nazwa_pola1; typ2 nazwa_pola2; ... };
Definicja zmiennej typu strukturalnego
Osoba student; Osoba pracownik = new Osoba();
Dostęp do pól
s.średnia = 5.0; string s = s.nazwisko;
Przykład
Przykład
- 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); } } } }
Inicjowanie struktur
struct student { int numer ; char nazwisko [ 5 ] ; } ; struct student janek = { 1 3 , " ABC " } ; struct student franek = { 5 , { ’A ’ , ’B ’ , ’C ’ } }
Konstruktor
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");
Tablica struktur
kod tutaj
Ćwiczenie
Zadanie 6 Baza danych osobowych
Ćwiczenie: baza danych
Zaimplementuj prostą bazę danych osobowych składającą się z sekwencji rekordów zawierających dane osobowe: imię, nazwisko i wiek osób umieszczonych w bazie danych. Struktury zawierające dane przechowuj w odpowiedniej tablicy. Dla uproszczenia zakładamy, że maksymalna ilość rekordów nie przekroczy 1000. Program po uruchomieniu wypisuje menu z możliwymi akcjami do wykonania po podaniu liczby od 1 do 5:
wyswietl - wyświetlenie całej bazy danych dodaj - dodanie nowego rekordu do bazy danych usun - usunięcie rekordu z bazy danych wskazanego przez numer zamien - modyfikacja zawartości rekordu wskazanego przez numer zamknij - zamkniecie programu
Zaimplementuj wszystkie funkcjonalności opisane w powyższym menu. Zadbaj o obsługę sytuacji wyjątkowych, np. gdy podczas usuwania rekordu użytkownik poda niepoprawny numer. Po wykonaniu akcji 1, 2, 3 lub 4 menu ponownie jest wyświetlane i użytkownik ponownie może wykonać jedną z akcji. Wybranie pozycji nr 5 kończy działanie programu.