---
title: "C# Effektiv kod"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/147736-c-effektiv-kod"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "jabbalizer"
published: "2006-06-05T14:20:18.000Z"
updated: "2006-06-06T18:23:03.000Z"
replies: 5
views: 507
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/147736-c-effektiv-kod"
---

# C# Effektiv kod

## #1 — jabbalizer, 2006-06-05T14:20Z

Vilket är effektivast av följande?

```
try
{
    foreach (TextBox tb in row._boxArray)
        if (tb.Enabled)
        {
            int originalValue = int.Parse(tb.Text);
            tb.Text = random.Next(row._lowerLimit, row._higherLimit + 1).ToString();

        }
}catch (FormatException){}
```

eller

```
foreach (TextBox tb in row._boxArray)
    if (tb.Enabled)
    {
        try
        {
            int originalValue = int.Parse(tb.Text);
            tb.Text = random.Next(row._lowerLimit, row._higherLimit + 1).ToString();
        }catch (FormatException){}
     }
```

Alltså:

Bör man lägga try-catch så nära det farliga området som möjligt, eller kräver det kanske mindre resurser om man gör try-catch en enda gång i stället för 10 eller 100?

Permalänk: https://www.webforum.nu/p/147736

## #2 — Nickemannen, 2006-06-05T15:26Z

Jag tycker du skall välja alternativ 1. Sålänge som du inte vill att den skall kunna köra vidare foreach-loopen och bara spara ner exceptionet som kastas.

Permalänk: https://www.webforum.nu/p/1826744

## #3 — cok, 2006-06-05T16:10Z

Vad använder du originalvalue till? Är det endast för att validera input i textboxen? Isf kanske det är ide att skapa en class som ärver av textbox och hantera detta där istället? Bara en fundering.. :)

Isf kan du hantera det redan när du lämnar textboxen, hantera olika typera av data (datetime, double text etc.).

Permalänk: https://www.webforum.nu/p/1826762

## #4 — Phorpher, 2006-06-05T16:19Z

Generellt vill man nog hantera fel så nära felkällan som möjligt men i det här fallet så kan det vara bättre att köra med alt. 1. Try/Catch suger rejält med prestanda.

Om du använder framework 2.0 och vill undvika exceptions helt så kan du i det här fallet använda metoden TryParse(string str, out intVal) som returnerar true om konverteringen lyckades och false om den misslyckades.

Permalänk: https://www.webforum.nu/p/1826765

## #5 — jabbalizer, 2006-06-05T17:47Z

Tack för de svaren =)

Nickemannen: Nej jag har inget behov av att fortsätta foreach. =)

cok: Koden var inte färdig när jag hindrades av min fundering. Såhär ser det ut nu:

```
int originalValue = int.Parse(tb.Text);
tb.Text = random.Next(Math.Max((originalValue - originalValue/10 -1 ),row._lowerLimit), Math.Min((originalValue + originalValue/10 +1 ),row._higherLimit) + 1).ToString();
```

Jag slumpar helt enkelt ett nytt värde till textfältet som avviker max 10%av ursprungsvärdet plus/minus 1. Plus/minus är med för att 1-9 ska kunna bli mindre, och för att 0-9 ska kunna bli större. Endast positiva värden används.

Phorpher: Det låter ju som en bra grej. Om inte annat så blir det kanske mindre kod.

Nu ligger ju denna kod i ett användargränssnitt, så det är ju lite att skjuta flugor med elefantbössan. Men man är ju nyfiken!

Permalänk: https://www.webforum.nu/p/1826779

## #6 — Gladh, 2006-06-06T18:23Z

> **phorper skrev:**
>
> Try/Catch suger rejält med prestanda.

Det har inte jag läst, däremot så suger en exception som kastas rejält med prestanda, medans en try/catch inte tar speciellt mycket prestanda, knappt märkbar.

Men eftersom en exception suger prestanda, så skall man precis som du säger göra en TryParse istället för en try/catch om det nu är där som man kan få felet. Generellt kan man säga att alla fel som du kan förvänta dig, skall du lösa utan en try/catch, och detta är ett typ exempel på ett sådant fel, likadant med filer som inte finns...

\- M

Permalänk: https://www.webforum.nu/p/1827064

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/147736-c-effektiv-kod
