Sobes.tech
Middle

Ҳамчун имкониятҳои дар барноманависӣ пешниҳодшудаи Generics чӣ гуна аст?

sobes.tech AI

Ҷавоб аз AI

Генерикҳо имкониятҳои зеринро пешниҳод мекунанд:

  • Бехатарии бештар дар навъи: Код ба хатогиҳои вақти иҷро дар робита ба номувофиқии навъҳо тобовартар мешавад. Компилятор навъҳоро дар вақти компиляция санҷида, на танҳо дар вақти иҷро санҷиш мекунад.
  • Истифодаи дубораи коди: Шумо метавонед сохторҳои маълумоти умуми, синфҳо ва усулҳоро эҷод кунед, ки бо навъҳои маълумоти гуногун кор мекунанд, бе ниёз ба такрори коди иловагӣ.
  • Беҳтар кардани самаранокӣ: Дар баъзе забонҳо, истифодаи генерикҳо метавонад ба коди бештар самаранок дар муқоиса бо табдили навъҳои дастӣ ё истифодаи синфи асосии Object оварда расонад, зеро зарурати бастабандӣ ва бозбастани навъҳои ибтидоиро бартараф мекунад.
  • API тоза ва хонданашаванда: Интерфейсҳои китобхонаҳо ва синфҳо бештар даркшаванда мешаванд, ки бо кадом навъҳо кор мекунанд.

Масалан дар Java:

// Масалан дар истифодаи синфи умуми ArrayList
List<String> номҳо = new ArrayList<>();
номҳо.add("Alice");
// номҳо.add(123); // Хатои компиляция - бехатарии навъ
String номи = номҳо.get(0); // Ниёз ба табдили навъ нест

Масалан дар C#:

// Масалан дар истифодаи усули умуми
public T ГириФерштЭлемент<T>(List<T> рӯйхат)
{
    if (рӯйхат != null && рӯйхат.Count > 0)
    {
        return рӯйхат[0];
    }
    return default(T); // Вақте ки арзиши пешфарз барои навъи T
}

List<int> рақамҳо = new List<int>() { 1, 2, 3 };
int аввалинРақам = ГириФерштЭлемент(рақамҳо); // Кор мекунад бо int

List<string> рангҳо = new List<string>() { "сурх", " сабз" };
string аввалинРанг = ГириФерштЭлемент(рангҳо); // Кор мекунад бо string