Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Konstruktor i C#

Postades av 2004-02-01 18:51:23 - Fredric Sannebro, i forum asp.net generellt, Tråden har 7 Kommentarer och lästs av 1546 personer

Hej!
Vet inte riktigt hur jag ska formulera min fråga eftersom jag inte är så vass på C# men jag försöker:

Jag har skapat en klass som ska formatera Postnummer och när man instantierar ett objekt från denna klass så ska man skicka med postnummer och en landskod.
Jag instantierar objektet så här:

<code>
ZipCode0 postNummer = new ZipCode0(txtZipCode.Text, selectedCountry);
</code>

Klassen ser ut så här:

<code>
using System;

namespace WebApplication1.Classes
{
/// <summary>
/// Testar lite bara...
/// </summary>
public class ZipCode0
{
public string zipCode;

public ZipCode0(string zipCode, Country country) {//Konstruktor - ta emot postnummer och Contry-värde
zipCode = zipCode.Replace(" ",string.Empty);
switch(country) {
case Country.Sweden:
zipCode = zipCode.Insert(3," ");//lägg in mellanslag på pos 3
zipCode = "SE-" + zipCode;//lägg till landskod
break;
case Country.Norway:
zipCode = "NO-" + zipCode;
break;
}
this.zipCode = zipCode;//värde som returneras till objektet. Är det så man gör????
}
}
}
</code>


Jag hade länge problem med att få "tillbaka" något när jag skapade detta objekt. Det enda som returnerades ut var ett kvalificerat namn på klassen ZipCode0.
Efter lite trixande så fick jag till det genom att i konstruktorn skriva:

<code>
this.zipCode = zipCode;
</code>

Detta funkar - men tänker jag rätt?

Mvh,
Fredric


Svara

Sv: Konstruktor i C#

Postades av 2004-02-01 20:50:37 - Johan Lindfors

En konstruktor kan inte returnera något värde, det funkar så som du har gjort men jag skulle rekommendera att om du "inkapslar" din
<code>
public string zipCode
</code>
som en egenskap enligt
<code>
private string zipCode;
public string ZipCode {
get {
return zipCode;
}
set {
zipCode = value;
}
}
</code>

Då får du bättre kontroll på tilldelning och avläsning av variabeln.

Mvh


Svara

Sv: Konstruktor i C#

Postades av 2004-02-01 22:41:03 - Fredric Sannebro

Tack för ditt svar!
Tyvärr är jag lite för korkad/grön för att fatta vad du menade. Lite cool att en filmstjärna (MSDN-TV) som du svarade... ;-)

Mvh,
Fredric


Svara

Sv: Konstruktor i C#

Postades av 2004-02-02 07:00:58 - Johan Lindfors

Egenskaper i C# är väldigt smidigt och ger dig större kontroll på tilldelning (sätta värdet på variabeln) och avläsning. I exemplet som jag skrev ovan så skulle du inte kunna göra så här:
<code>
ZipCode0 theZipCode = new ZipCode0(...);
string theZip = theZipCode.zipCode; // <- Här kommer det bli fel, zipCode är privat
theZipCode.zipCode = "164 93"; // Här kommer det också bli fel, samma skäl som ovan
</code>
Men däremot skulle det här vara helt dugligt:
<code>
ZipCode0 theZipCode = new ZipCode0(...);
string theZip = theZipCode.ZipCode; // <- Observera stor bokstav på ZipCode
theZipCode.ZipCode = "164 93"; // <- Observera stor bokstav på ZipCode
</code>
Det som också är grannt är att om du inte vill att någon ska kunna tilldela ZipCode något värde så tar du bara bort "set" metoden, och användare av din klass ZipCode0 kommer bara kunna läsa ZipCode och alltså då bara sätta ZipCode genom konstruktorn!
<code>
public string ZipCode {
get {
return zipCode;
}
}
</code>
Fler filmer kommer... ;)

Mvh


Svara

Sv: Konstruktor i C#

Postades av 2004-02-02 17:18:39 - Fredric Sannebro

Tjena Johan!
Tack för att du tog tid tid att vidareutveckla din lösning. Ska verkligen sätta mig ner och testa detta (jag kanske tom. kommer fatta denna gång...?)

Men nu ska jag äta först... ;-)

Tusen tack!


Svara

Sv: Konstruktor i C#

Postades av 2004-02-03 15:40:55 - Patrik Löwendahl

om du har en klass som representerar en zip code, varför ha en egenskap i klassen då som gör samma sak?? Känns inte OOP, gör en override på ToString istället:

<code>
namespace WebApplication1.Classes
{
public class ZipCode0
{
private string zipCode;

public ZipCode0(string zipCode, Country country) {//Konstruktor - ta emot postnummer och Contry-värde
zipCode = zipCode.Replace(" ",string.Empty);
switch(country) {
case Country.Sweden:
zipCode = zipCode.Insert(3," ");//lägg in mellanslag på pos 3
zipCode = "SE-" + zipCode;//lägg till landskod
break;
case Country.Norway:
zipCode = "NO-" + zipCode;
break;
}

this.zipCode = zipCode;//värde som returneras till objektet. Är det så man gör????
}

public override string ToString()
{
return zipCode;
}
}
}
</code>

Nu funkar ZipCode klassen som alla andra klasser i .NET framework


Svara

Sv: Konstruktor i C#

Postades av 2004-02-03 19:16:07 - Johan Lindfors

Snyggt Patrik, bra tänkt!


Svara

Sv: Konstruktor i C#

Postades av 2004-02-03 21:30:04 - Fredric Sannebro

Tack för tipset Patrik!

Jag går en utbildning nu och vi har precis börjat med C# och det är väldigt frustrerande när man inte kan lösa allt själv på en gång.

Vi hade fått i uppgift lyfta ut metoden (som vi använt i tidigare övning) och lägga den i en egen klass (som övning). Metoden skulle vi lägga i konstruktorn och sen skulle vi lösa resten själva som hemuppgift. Lätt som en plätt tänkte jag... Men det var inte så lätt.

Men jag tycker att det var en smart lösning du kom på här och med facit i handen så ser det självklart ut. Detso mer frustrerande när man inte kom på det själv. Grrrr....

;-)

Tack ska ni ha!

(jag lär återkomma med fler puckade frågor)


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
6 059
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies