Just nu i M3-nätverket
Gå till innehåll

Komma åt string[] från en annan klass.


Aastra

Rekommendera Poster

Detta kanske är en simpel fråga men jag som nybörjare lyckas inte få till det.

Jag har ett litet program där jag i början läser in flera namn från en textfil till en string[] i funktionen setStartValues(). För varje nytt namn lägger jag till ett värde och en ny rad. Det ser ut ungefär så här.

public class ReadValue
{
public string[] _myString = new string[256];

public void setStartValues()
{ 
	läser en fil och lägger till ett värde och sparar värde till   _myString 
}
}

Från en annan klass vill jag nu komma åt allt som finns sparat i _myString men jag lyckas inte :(

Jag vet att _myString ser ut som den skall efter att funktionen är klar.

Länk till kommentar
Dela på andra webbplatser

Egentligen har jag listat ut så mycket och även försökt men utan att få till det. Skulle du kunna ge ett exempel på funktionen i ReadValue och hur jag skall nå den från min andra klass?

Länk till kommentar
Dela på andra webbplatser

Tack för poängen :)

 

Jag har aldrig programmerat i C#, däremot i C och C++ men även det är flera år sedan så det är svårt för mig att skriva koden utan jag föredrar att hålla det på en något högre nivå.

 

Sidan http://www.c-sharpcorner.com/UploadFile/mahesh/WorkingWithArrays11232005064036AM/WorkingWithArrays.aspx tar upp mycket om arrayer.

 

Sidan http://msdn.microsoft.com/en-us/library/hyfeyz71.aspx tar upp användningen av arrayer som argument till metoder och http://www.dotnetperls.com/array har exemplet "Program that returns array reference". Olika typer av parametrar/argument beskrivs på http://www.yoda.arachsys.com/csharp/parameters.html och ett par exempel finns på http://www.daniweb.com/software-development/csharp/threads/108098

 

Se om inte ovanstående gör att du kan börja skriva koden för din metod och sedan fråga mer.

 

PS. Det finns ingen anledning till att myString är public utan den bör ju vara privat.

Länk till kommentar
Dela på andra webbplatser

Det finns flera spännande sätt att lösa detta på. Först en detalj angående din string array. Det är att du måste ange storleken på den i förväg. Vad händer om du vill läsa in 257 värden från din fil? Det går att ändra storlek på en array, men det är oftast enklast att använda en collection av något slag.

 

Så jag skulle rekomendera att du provar något i stil med det här

using System;
using System.Collections.Generic;

public class ReadValue
{
// Detta är en "automatisk" property som säger att vem som helst får läsa den
// Men vara denna klass får skriva till den.
public List<string> MyString { get; private set; }

// Konstruktor. Körs när vi instansierar klassen.
public ReadValue()
{
	MyString = new List<string>();
}

public void SetStartValues()
{
	// Läser en fil och lägger till ett värde och sparara värde till MyString
	//För att lägga till värde i MyString
	MyString.Add("Ny sträng");
}
}

public class SomeOtherPartOfTheProgram
{
public static void Main()
{
	// Skapa en instans av ReadValue
	ReadValue rv = new ReadValue();
	rv.SetStartValues();
	List<string> list = rv.MyString;

	// Om du fortfarande verkligen vill ha en array
	string[] array = list.ToArray();
}
}

 

Annars har du andra möjligheter. Du kan modifiera SetStartValues att returnera en string array.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...