Avatar billede unsigned Nybegynder
09. april 2006 - 13:27 Der er 4 kommentarer og
1 løsning

Tilgå konstruktor data fra funktion

Jeg har et lille test program:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace constructor_example
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            // Her er formens konstruktor
            // Placer kode efter kald til InitializeComponent
            InitializeComponent();

            // Konstanter oprettes
            // X og y for centrum af viseren
            int viser_centrum_x = 500;
            int viser_centrum_y = 250;
            // Længde af viseren
            int viser_laengde = 200;
            int antal_viser_ryk = 60;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int sum = viser_centrum_x + viser_centrum_y;
        }
    }
}

Funktionen button1_Click virker ikke. Hvordan kan funktionen button1_Click komme til at virke, dvs tilgå de data, der er defineret i konstruktoren.
Avatar billede driis Nybegynder
09. april 2006 - 13:30 #1
Dine variable skal være felter på klassen, dvs. flyttes udenfor constructoren.
Avatar billede driis Nybegynder
09. april 2006 - 13:31 #2
namespace constructor_example
{
    public partial class Form1 : Form
    {
            // Konstanter oprettes
            // X og y for centrum af viseren
            int viser_centrum_x = 500;
            int viser_centrum_y = 250;
            // Længde af viseren
            int viser_laengde = 200;
            int antal_viser_ryk = 60;

        public Form1()
        {
            // Her er formens konstruktor
            // Placer kode efter kald til InitializeComponent
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int sum = viser_centrum_x + viser_centrum_y;
        }
    }
}
Avatar billede driis Nybegynder
09. april 2006 - 13:33 #3
... og hvis du vil tildele værdierne i constructoren, f.eks. fordi det kræver en beregning, opretter du blot felter på klassen og tildeler dem i constructoren, eks.:

public class MyClass
{
  private int index = 0;

  public MyClass()
  {
    index = CalculateMyIndex();
  }
}
Avatar billede unsigned Nybegynder
09. april 2006 - 13:52 #4
Tak for svaret, driis.
Avatar billede dj_uncas Nybegynder
09. april 2006 - 15:21 #5
Hvis tallene ikke ændrer sig er det federe at have dem konstanter, istedet for instance fields:

public class MyForm : Form
{
    private const int _ViserCentrumX = 500;
    private const int _ViserCentrumY = 250;

    public MyForm()
    {
    }

    public void button1_Click( object sender, EventArgs e )
    {
        int sum = _ViserCentrumX + _ViserCentrumY;
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester