Kurzusok
/
C#
C#
/
Feladatok
/
Tim a marketingről
Tim a marketingről

Tim a marketingről

Tanulófeladat

Bevezetés

Nullázhatóság

A C#-ban a null literál egy érték hiányát jelöli. A nullázható típus olyan típus, amely megengedi a null értékeket.

A C# 8.0 előtt a referenciatípusok mindig nullázhatók voltak, az értéktípusok viszont nem. Egy értéktípus úgy tehető nullázhatóvá, hogy kérdőjelet (?) fűzünk a neve után.

string nullableReferenceType = "hello";
nullableReferenceType = null; // Valid as type is nullable

int nonNullableValueType = 5;
nonNullableValueType = null; // Compile error as type is not nullable

int? nullableValueType = 5; // Define nullable value type
nullableValueType = null;   // Valid as type is nullable

Ha egy null értékű változó tagjára hozzáférsz, az nem fordítási hibához vezet, hanem futásidőben NullReferenceException kivételt dob:

string sentence = null;

// Throws NullReferenceException at runtime
sentence.Length;

Hogy ezt a gyakori hibatípust kiküszöbölje, a C# 8 lehetővé teszi, hogy bekapcsolj egy funkciót, amely alapértelmezés szerint nem nullázhatóvá teszi a referenciatípusokat:

string nonNullableReferenceType = "book";
nonNullableReferenceType = null; // Compile warning (no error!)

string? nullableReferenceType = "movie";
nullableReferenceType = null; // Valid as type is nullable

Ahhoz, hogy biztonságosan dolgozz nullázható értékekkel, használat előtt ellenőrizd, hogy null-e:

string NormalizedName(string? name)
{
    if (name == null)
    {
        return "UNKNOWN";
    }

    // Value is not null at this point, so no compile warning
    // and no runtime NullReferenceException being thrown
    return name.ToUpper();
}

NormalizedName(null); // => "UNKNOWN"
NormalizedName("Elisabeth"); // => "ELISABETH"

A ?? operátorral akkor is visszaadhatsz egy alapértelmezett értéket, ha az érték null:

string? name1 = "John";
name1 ?? "Paul"; // => "John"

string? name2 = null;
name2 ?? "George"; // => "George"

A ?. operátorral biztonságosan hívhatsz meg tagokat egy esetleg null értéken:

string? fruit = "apple";
fruit?.Length; // => 5

string? vegetable = null;
vegetable?.Length; // => null

Utasítások

Ebben a feladatban olyan kódot írsz, amely névjelvényeket nyomtat gyári alkalmazottaknak.

1. Jelvény nyomtatása egy alkalmazottnak

Az alkalmazottaknak van azonosítójuk, nevük és részlegnevük. Az alkalmazottak jelvénycímkéi a következő formátumot követik: "[id] - name - DEPARTMENT". Valósítsd meg a (statikus) Badge.Print() metódust, amely egy alkalmazott jelvénycímkéjét adja vissza:

Badge.Print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"

Figyelj arra, hogy a címkén a részleg neve csupa nagybetűvel szerepel.

2. Jelvény nyomtatása egy új alkalmazottnak

A számítógépes rendszer sajátossága miatt előfordul, hogy az új alkalmazottaknak még nincs azonosítójuk, amikor elkezdenek dolgozni a gyárban. Mivel a jelvény kötelező, ideiglenes jelvényt kapnak, amelyen nincs ott az azonosító előtagja. Módosítsd a (statikus) Badge.Print() metódust, hogy azoknak az új alkalmazottaknak is működjön, akiknek még nincs azonosítójuk:

Badge.Print(id: null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"

3. Jelvény nyomtatása a tulajdonosnak

A gyár tulajdonosának is folyamatosan jelvényt kell viselnie. A tulajdonosnak azonban nincs részlege. Ebben az esetben a címkére a részleg neve helyett az "OWNER" kerüljön. Módosítsd a (statikus) Badge.Print() metódust, hogy a tulajdonos számára is nyomtasson címkét:

Badge.Print(254, "Charlotte Hale", department: null);
// => "[254] - Charlotte Hale - OWNER"

Figyelj arra, hogy előfordulhat, hogy a tulajdonos egyben új alkalmazott is:

Badge.Print(id: null, "Charlotte Hale", department: null);
// => "Charlotte Hale - OWNER"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# Exercism

Készen állsz elkezdeni a(z) Tim a marketingről feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.