14. april 2010 - 09:52
Der er
23 kommentarer og 1 løsning
Get og Set
Hey, Jeg har et problem - jeg kan ikke lave 3.0 accessor-methods. private string name; public string Name { get; set; } Virker ikke... men hvis jeg laver "gammeldags" metoder: public string Name { get{return name;} set{name = value;} } Så virker det fint. Jeg har .NET 3.5 installeret. Any ideas?
Annonceindlæg fra Computerworld it-jobbank
14. april 2010 - 10:08
#1
Har du targeted 3.5 frameworket i dit projekt?
14. april 2010 - 10:11
#2
Hvorledes mener du?
14. april 2010 - 10:30
#3
Hvis du bruger Visual Studio kan man vælge hvilken udgave af .NET frameworket man vil udvikle op mod. Det kan naturligvis give problemer hvis du ønsker at bruge funktioner fra 3.5 frameworket, men udvikler op mod 2.0. Åbn dit projekt i Visual Stduio, højreklik på projektet og vælg Properties. Find punktet Application. Her kan du ændre "Target Framework" til en anden version. ...Men det er nu blot et bud. Det kan jo være der er noget andet galt, eller du ikke bruger Visual Studio :)
14. april 2010 - 10:30
#4
Properties for dit projekt ... -> Application -> Target Framework mvh
14. april 2010 - 10:39
#5
Ahh dér. Den står til 3.5 - og jeg bruger VS2008 Pro.
14. april 2010 - 11:08
#6
hvad får du af fejl?
14. april 2010 - 11:12
#7
Jeg får ingen fejl - den henter bare ikke værdierne. Jeg har forsøgt at gøre variablerne public og de er sat... men get; returnerer bare ikke noget/blank.
14. april 2010 - 11:29
#8
Tror du bliver nød til at komme med noget kode som ikke virker for at vi kan komme videre :-) mvh
14. april 2010 - 11:34
#9
private string name; public MyClass(string name) { this.name = name; } public string Name { get; set; } // Det virker ikke --- --- public string Name { get { return name; } set { name = value; } } // Det virker
14. april 2010 - 11:38
#10
name og Name er jo to forskellige variabler.
14. april 2010 - 11:41
#11
:-) Jeg ikke jeg kan være mere enig med spotgun. Tror jps6kb sidder og slår alt hår ud af hovedet nu :-) mvh
14. april 2010 - 11:42
#12
Det er det, men Name vil jo læse name i den kontruktion der. Umiddelbart vil jeg tro, at problemet er, at C# versionen ikke følger med .NET?
14. april 2010 - 11:43
#13
ja, og grunden til at løsning med en private setter er at der har din klasse en en variable "name" ... mvh
14. april 2010 - 11:45
#15
Altså, jeg har jo min private string name hele tiden. Det er bare get; set; der ikke virker... get { return name;} virker fint...?
14. april 2010 - 11:56
#16
Nej, this.name = name; Laver en assign til sig selv ... public string Name {get; set;} bliver aldrig assigned til. mvh
14. april 2010 - 11:59
#17
Ja, men grunden til at det virker med et backing field. Er at "this.name" henviser til klassens "name" field og "name" henviser til din constructor parameter. mvh
14. april 2010 - 12:29
#18
Ohh - så jeg kan altså ikke lave en konstruktør som sætter værdierne i den? Eller, jo så skal jeg lave noget med... public Foo(string name) { Name = name; } ??
14. april 2010 - 12:33
#19
præcis .... Du kan kun lave det på den anden måde hvis du også har et backing field som hedder name og du bruger this.name = name. mvh og svar
14. april 2010 - 12:35
#20
Jamen se - det var jo bare det jeg havde misset - det er sgu også noget bøvl alt sammen. Hehe.. tak for det - smider du point?
14. april 2010 - 12:36
#21
Baah - eller jeg kunne bruge det svar du havde lagt... hehe... fortsat god dag.
14. april 2010 - 12:42
#22
hehe, kan også godt lide du skriver "Smider du point?" :-) Fortsat god dag til dig ... og håber det alt sammen kommer til at virke.
15. april 2010 - 02:51
#24
For lige at pinde det lidt ud. public string Name { get; set; } bruger et felt bagved. Men de bruger ikke det af brugeren oprettede: private string name; men derimod sin egen: private string <Name>k__BackingField; og de to felter har naturligvis ikke noget med hinanden at gøre.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.