# Zu C#: Verwendung von .value?



## NiXPhoE (6. Jan 2014)

Hallo,

ich will mich in die Entwicklung mit C# einlesen. Und ich habe eine Frage zu Variablen und zu value. Wann hängt man bei der Deklaration einer Variable, und bei welchen, das .value an? Es besagt ja, den Startwert der Variablen. Was heißt das? Nimmt man value nur bei Schleifenvariablen? Ich bitte darum dieses Thema einmal zu diskutieren.

Danke!


----------



## eso (6. Jan 2014)

what??? hast du ein Codeschnippsel?


----------



## NiXPhoE (6. Jan 2014)

```
private void numEingabe_ValueChanged(...)
{
   lblAusgabe.Text = "Wert: " + numEingabe.Value;
}
```


----------



## eso (7. Jan 2014)

Wahrscheinlich meinst du das Nullable. Das „?“ ist die Kurzschreibweise davon. 
Guckst du hier: Nullable Types (C# Programming Guide)


----------



## NiXPhoE (8. Jan 2014)

Nein. Ich meine einfach: Value.


----------



## KSG9|sebastian (8. Jan 2014)

Hab zwar noch nicht viel gemacht mit .NET, aber in deinem Beispiel ist value ein Property der Klasse des Objekts numEingabe - ich vermute mal ein Eingabefeld für Text.

Ist mehr oder minder dasselbe wie getter/setter in Java.


```
class Foo {
   String bar;
 
   public void setBar(String bar) { this.bar = bar; }

   public String getBar(){ return bar; }
}

Foo f = new Foo();

f.getBar() // dasselbe wie numEingabe.value

f.setBar("barbar") // dasselve wie numEingabe.value = 13;
```

Imho hat das mit Variablen und Startwerten nix zu tun. 

.Value ist in einem Fall einfach ein definiertes Property an einer Klasse. Auf Instanzen dieser Klasse kann mit .<Name des Properties> auf das Property lesend und evtl. schreibend zugegriffen werden.


----------



## NiXPhoE (8. Jan 2014)

In meinem Buch steht: Value bezeichnet im Programm den Startwert und zur Laufzeit den aktuellen Wert.

Von Property steht da nichts und Property ist auch Java-spezifisch! Wie hast das zu deiner Aussage?


----------



## KSG9|sebastian (8. Jan 2014)

In deinem Codebeispiel verwendest du intEingabe.value.

intEingabe dürfte vom Typ NumberField sein - und NumberField hat (erbt) das Property Value.

Siehe: NumberField.Value property (Microsoft.SharePoint.WebControls)

Sprichst du davon: Galileo Computing :: Einstieg in Visual Basic 2012 - 2 Grundlagen

Dann solltest du das auch sagen.



			
				NiXPhoE hat gesagt.:
			
		

> .. und Property ist auch Java-spezifisch!



Völliger quatsch!

Java kennt Property nicht als Sprachkonstrukt. Attribute mit get/set werden als Property bezeichnet, eine Unterstützung dafür kennt Java aber nicht.

C#, Objective-C und weitere Sprachen haben eine Schlüsselwort für Properties - und im oberen Beispiel ist es genau so ein Property was verwendet wird.

Der Satz sagt nur aus das du im Code den Startwert festlegen kannst intField.value = 13 - Startwert 13.

Wenn das Programm läuft kannst du den vom Benutzereingestellten Wert eben über dieses Property abfragen: doSomethingWith(intField.value); // Methodenaufruf mit Wert des Feldes

Sicher das du noch ne Sprache anfangen willst zu lernen? Meinst nicht du solltest erstmal dein Java-Knowhow verbessern?


----------



## NiXPhoE (8. Jan 2014)

Was ein Property ist, ist mir noch nicht klar.

Bei dem Siehe-Link verstehe ich die Remarks noch nicht.

Ja, genau das Buch von Galileo meine ich.

In Java gibt es properties. In meinem Tool werden die Resourcendateien mit dieser Erweiterung gespeichert. Und warum das getter und setter sein sollen, leuchtet mir nicht ein, davon steht nichts im Code.

Kann ich nicht auch ohne Value den Wert einer Variablen abfragen?

Ja ich will Visual C# lernen. Erstens habe ich mir das Buch vor einem Jahr gekauft und zweitens habe ich vieleicht Ende des Monats einen Job wenn ich die Sprache beherrsche.


----------



## KSG9|sebastian (8. Jan 2014)

Zurück zu Adam und Eva.

Das was du meinst sind .properties-Dateien. Diese haben überhaupt nix mit Java oder sonst einer Programmiersprache zu tun. Es sind einfach Dateien mit einer Dateiendung. Du kannst das Ding auch .hanswurst nennen und trotzdem funktioniert es.

Die Klasse Properties ist eine Klasse aus dem JDK welche Dateien oder Streams einließt und key=value erwartet. Das hat aber auch nix mit dem Konstrukt "Property" zu tun.


```
@property name
```

Das ist ein Beispiel für ein Property aus Objective-C. Dadurch wird eine Variable name angelegt und zugehörige getter und setter erzeugt. Letztendlich geht es darum keinen boilerplate-Code zu haben.

Deine Frage ergibt soweit auch keinen Sinn. Was du auf einer Variable abfragen kannst hängt von deren Typ ab.

Im Fall von NumberField gibt es in der Klasse eine Variable Value. Und mit field.Value kannst du diese abfragen.

Ende des Monats C# beherrschen..da hast du einer einen sportlichen Plan vor dir. Gefühlt fehlen dir schon die Basics beim Programmieren, siehe deine aktuelle Frage. Ich würde dir vorschlagen nochmal ein paar Kapitel zurückzugehen und exakt zu verstehen was Klassen, Variablen u.s.w. sind. Sofern das Buch anders aufgebaut ist mach ein paar weitere Kapitel und versuche zu verstehen wie genannte Dinge funktionieren.


----------



## NiXPhoE (8. Jan 2014)

Ach so! NumField ist eine Klasse(Objekt) und Value eine Variable. Dann ist es schon klar. 
Objekt sagt sich so einfach! Was muss man da denken?
Thanks!


----------



## NiXPhoE (10. Jan 2014)

Ok, Object gibt es irgendwie in C#. Ich meine doch ein anderes Buch! Nicht das mit visual Basic, sondern "Einführung in C# 2012" auch von Galileo.


----------

