[C#] This-Operator?

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_this-operator_192819/page_1 - zur Vollversion wechseln!


Hansmaulwurf schrieb am 13.03.2008 um 16:02

Hi.
Ich steh gerade komplett an bei einer Erläuterung des "this" Operators.
Das einzige was ich weiß "Das this-Schlüsselwort verweist auf die aktuelle Instanz der Klasse" :confused:
Ich soll ein kurzes Fragment schreiben, wo der this Operator für eine Methode wirklich notwendig ist, und hab aber keinen Plan..
Google liefert alles nur nicht das was ich will.
(Term "this" gefällt ihm wohl nicht so :p)


Obermotz schrieb am 13.03.2008 um 16:05

Wenn mehrere Methoden/Variablen gleichen Namens existieren - this-> und die Sache ist eindeutig.


AoD schrieb am 13.03.2008 um 16:08

Code:
public class Person
{
	private string _vorname;
	public string Vorname
	{
		get { return _vorname; }
		set { _vorname = value; }
	}

	public Person(string Vorname)
	{
		this.Vorname = Vorname;
	}
}

ohne this, würdest du den Parameter sich selbst zuweisen.


Hansmaulwurf schrieb am 13.03.2008 um 16:18

Ok, langsam wirds glaub ich..

Aber @ AoD's Beispiel. Welcher ist dann der this.Vorname, bzw welcher Vornahme wird draufgeschrieben?

Ich steh nur gerade ein bissi am Schlauch, da ich schon seit 3 Stunden sitz, und das schon länger nicht mehr angerührt hab, und da denkt mein Hirn dann zu kompliziert :D


AoD schrieb am 13.03.2008 um 16:20

this.Vorname = Property Zeile 4-8
Vorname = Parameter des Konstruktors Zeile 10

this.Vorname = Vorname
kann man lesen
Property der Instanz = Parameter des Kontruktors


semteX schrieb am 13.03.2008 um 18:05

also so wie du das erklärst solltest besser nie lehrer werden ;)

mit Vorname ist, wie gesagt, ein property in der Klasse. wenn du jetzt this.Vorname aufrufst, wird Vorname der eigenen Klasse ausgeführt. und ned von irgend ner andern. oder gar von dem Vorname, was da via parameter daher kommt.

this verweist sozusagen IMMER auf "zeug aus meiner eigenen klasse"... und ned auf variablen, die irgendwie als parameter daher kommen.

allerdings rechtfertigt das eh scho wieder nen flame: Variablennamen mit nem groß buchstaben beginenn zu lassn ist ein guter grund für 50 peitschenhiebe auf den nackten hintern.


Symon schrieb am 13.03.2008 um 19:01

Zitat von semteX
allerdings rechtfertigt das eh scho wieder nen flame: Variablennamen mit nem groß buchstaben beginenn zu lassn ist ein guter grund für 50 peitschenhiebe auf den nackten hintern.
also imho is das durchaus so üblich in c# um die getter/setter zu kennzeichnen und die private var dazu mit _* zu benennen.


DKCH schrieb am 13.03.2008 um 19:06

üblich (leider) ja (danke an die vb-coder da draussen), empfohlen/sinnvoll/schön nein. siehe auch http://msdn2.microsoft.com/en-us/library/ms229045.aspx


Hansmaulwurf schrieb am 13.03.2008 um 19:12

Ok, danke an alle.
Das war nur eben so extrem blöd wegen Google inkombilität, und die Microsoft Hilfe ist auch nicht so das gelbe vom Ei :D


COLOSSUS schrieb am 13.03.2008 um 19:14

pah, getter/setter-Methoden sind generell urgh!. Ruby macht vor, wie es schoen ist :)

Zitat
Unlike the "getter" and "setter" methods of other languages like C++ or Java, accessor methods in Ruby can be written with a single line of code.
Quelle: Wikipedia


DKCH schrieb am 13.03.2008 um 19:16

Zitat von COLOSSUS
pah, getter/setter-Methoden sind generell urgh!. Ruby macht vor, wie es schoen ist :)


Quelle: Wikipedia

und, was hilfts jemand der c# verwendet? ;) themenverfehlung, fünf, setzen


semteX schrieb am 13.03.2008 um 19:25

Zitat von Symon
also imho is das durchaus so üblich in c# um die getter/setter zu kennzeichnen und die private var dazu mit _* zu benennen.
getter + setter (in c# ja kurz: propertys): JA

variablen, die als argumente übergeben werden (String Vorname): no fcking way.


DKCH schrieb am 13.03.2008 um 19:28

Zitat von COLOSSUS
pah, getter/setter-Methoden sind generell urgh!. Ruby macht vor, wie es schoen ist :)


Quelle: Wikipedia

aja, was ich vergessen hab: ganz lernresistent is ja nicht mal ms, in c# 3.0 gibts public string Vorname { get; set; }. wird schon, mitm ruby-style ;)


COLOSSUS schrieb am 13.03.2008 um 19:29

Zitat von DKCH
und, was hilfts jemand der c# verwendet? ;) themenverfehlung, fünf, setzen

Dann setz' dich gleich neben mich, Mr.-Visual-Basic-Cross-Referencer.

(Manchmal ist es aber auch gar nicht schaedlich, ueber den tellerrand zu schauen :eek: )


AoD schrieb am 14.03.2008 um 08:36

Zitat von semteX
allerdings rechtfertigt das eh scho wieder nen flame: Variablennamen mit nem groß buchstaben beginenn zu lassn ist ein guter grund für 50 peitschenhiebe auf den nackten hintern.
Es war ja nur als ein Beispiel für die Notwendigkeit des this Operators gedacht, da mir nichts anderes eingefallen ist. In meinem normalen Code haben Parameter natürlich einen Kleinbuchstaben am Anfang ;)
Zitat von DKCH
aja, was ich vergessen hab: ganz lernresistent is ja nicht mal ms, in c# 3.0 gibts public string Vorname { get; set; }. wird schon, mitm ruby-style ;)
Ergänzung: Die heißen dann "Automatic Properties"




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025