Gå til innhold

C#: Hvordan la en variabel gjelde for hele kodingen


Anbefalte innlegg

Jeg er nybegynner i C# og har laget en liten side hvor jeg har flere ting som skjer på kommando - det med private void. Hvordan kan jeg la en variabel som er laget under f.eks. en knapp, gjelde under alle de forskjellige private void'ene jeg lager.

 

Jeg trodde det var slik:

 

	public partial class MainPage : UserControl
{
	public int intAntall2;
       }

 

Den vil ikke regne med intAntall2 når jeg skal beregne det en annen plass. Hva er grunnen?

Lenke til kommentar
Videoannonse
Annonse

Den kan bare brukes innenfor klassen MainPage, ikke i en annen klasse.

 

Hvis du skal ha tilgang fra en annen klasse kan du lage en funksjon som returnerer intAntall2, eller du kan gjøre den om til en Property { get; set; }

 

Alternativt kan du deklarere intAntall2 som static, da er den tilgjengellig som MainPage.intAntall2

 

 

Lenke til kommentar

Den kan bare brukes innenfor klassen MainPage, ikke i en annen klasse.

 

Hvis du skal ha tilgang fra en annen klasse kan du lage en funksjon som returnerer intAntall2, eller du kan gjøre den om til en Property { get; set; }

 

Alternativt kan du deklarere intAntall2 som static, da er den tilgjengellig som MainPage.intAntall2

Kunne du skrivt dette opp som en kode? Jeg forstår det ikke.

Lenke til kommentar

Eksempel:

 

public partial class MainPage : UserControl
{
         public int IntAntall2 { get; private set; }

         public MainPage()
         {
 IntAntall2 = 99;
        new SecondClass(this);
    }
}

public class SecondClass
{
   public SecondClass(MainPage mp)
   {
int tst = mp.IntAntall2;
   }
}

 

 

 

Lenke til kommentar
  • 2 uker senere...

Alternativt:

Globals.cs

namespace GlobalTest
{
   public class Globals
   {
       public static int test = 1;

   }

}

 

Form1.cs

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

namespace GlobalTest
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           Globals.test = 5;
           textBox1.Text = Globals.test.ToString();
       }

       private void button2_Click(object sender, EventArgs e)
       {
           Globals.test = 3;
           textBox1.Text = Globals.test.ToString();
       }
   }
}

Lenke til kommentar

Det du må forstå er at en metode er et såkallt nytt SCOPE. Du kan se på et SCOPE som et nytt nivå i programmet ditt og alt du definerer i dette "scopet" vil kunn være tilgjengelig f.o.m. dette scopet. Se for deg følgende:

Nivå1
{
 int a;  
 Nivå2a
 {
   int b;
   a = 1;  //Dette er tillat fordi Nivå2a kan se Nivå1
   b = 2;  // Dette er tillat fordi b er i samme scope
 }
 Nivå2b
 {
   a = 1;  // Dette er også tillat fordi Nivå2b kan se Nivå1
   b = 2;  // Dette er ikke tillat fordi Nivå2b ikke kan se Nivå2a
 }
 a = 3;  // Dette er tillat fordi a er i samme scope
 b = 4;  // Dette er ikke tillat fordi b er totalt ukjent for dette nivået
}

Så er det dette med PUBLIC og PRIVATE

 

Du definerer PUBLIC foran alt som skal være kjent på utsiden av et objekt. Det du prøvde på var å definere en PUBLIC inen i en metode. Du kan ikek definere egenskaper til en klasse inne i en metode. Disse må du definere i selve klassen

 


MyClass      CLASS
{
 int a;  // Dette er en privat egenskap som kunn er tilgjengelig i klassens metoder
 public b;  // Dette er en public egenskap som er kjent utenfor klassen
 public void MyMethod()
 {
   public int abc; // Dette har ingen mening fordi abc kunn er en variabel
   int def; // Dette derimot er det mening i og variabelen def kan brukes i denne metoden
 }
 //  Som betyr at:
 def = 123; // vil feile da dette IKKE er en egenskap, men som sagt, en variabel
}

 

Når jeg skal lage "globale variabler" så pleier jeg lage en public static klasse med navn GLOBAL

 

public static class GlobaleData
{
 public static int BrukerID;
}

Her vil "variablen" GlobalData.BrukerID være tillgjengelig over alt i programmet. Lag gjerne en egen DLL med slike ting og inkluder disse under References.

 

Håper du får noe ut av dette...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...