Kom ihåg mig?
Home Menu

Menu


En "liten" C# fråga

Ämnesverktyg Visningsalternativ
Oläst 2008-09-08, 11:06 #1
Simonees avatar
Simonee Simonee är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2006
Inlägg: 347
Simonee Simonee är inte uppkopplad
Flitig postare
Simonees avatar
 
Reg.datum: Oct 2006
Inlägg: 347
Jag har precis börjat med C# och läser just nu ett par böcker (Head first C sharp samt Illustrated C Sharp), men får fortfarande inte riktigt kläm på grunderna. <_<

Så om någon vänlig själ orkar förklara ett par saker vore det toppen B)

koden:


Kod:
using System;



 * *class DaysTemp
 * *{
 * * * *public int High, Low;
 * * * *public int Average()
 * * * *{
 * * * * * *return (High + Low) / 2;
 * * * *}
 * *}

 * *class Program
 * *{
 * * * *static void Main()
 * * * *{
 * * * * * *DaysTemp t1 = new DaysTemp();
 * * * * * *DaysTemp t2 = new DaysTemp();

 * * * * * *t1.High = 58; t1.Low = 40;
 * * * * * *t2.High = 50; t2.Low = 35;

 * * * * * *Console.WriteLine("t1:{0},{1},{2}", t1.High, t1.Low, t1.Average());
 * * * * * *Console.WriteLine("t2:{0},{1},{2}", t2.High, t2.Low, t2.Average());
 * * * *}
 * *}
Frågorna:

1- Vad har denna textkod för roll i programmet?

Jag har förstått att det är från denna klass man anropar värden?

Kod:
class DaysTemp
 * *{
 * * * *public int High, Low;
 * * * *public int Average()
 * * * *{
 * * * * * *return (High + Low) / 2;
 * * * *}
 * *}

2- Gällande fråga nummer 1, om ovanstående kod är värden. Varför skriver man även värden under
metoden "static void Main", dvs varför måste man anropa variablerna "High,Low osv" när det redan står hur mycket High, Low är lika med ? (koden nedanför)


t1.High = 58; t1.Low = 40;
t2.High = 50; t2.Low = 35;




3- Varför skapa en ny klass som redan finns ( new DaysTemp)?

DaysTemp t1 = new DaysTemp();

3- Är både t1 och High variabler och vad betyder t1.High?


Någon som orkar förklara detta för mig?
Simonee är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-08, 13:40 #2
Fruitness Fruitness är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 17
Fruitness Fruitness är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2008
Inlägg: 17
Hej,

1.
Ja, det är klassen som utför beräkningen (Average) och lagrar värdena i två egenskaper (properties) vars namn är High och Low.

2.
De första t1-2.High, t1-2.Low fyller klassens egenskaper med värden, dvs nu har respektive instans (återkommer med det under 3:an) värden i sina egenskaper.

För att hämta ut och skriva ut värdena vilket du gör i Console.WriteLine så behöver du ju hämta dem där de är lagrade och det är de i respektive instanserna, t1 och t2.

Slutsats på det är att först fyller du dina egenskaper, sedan hämtar du värdena och skriver ut dem.

3a.
För att kunna använda klassen så behöver du skapa en instans av klassen och det är det som du gör genom att skriva "DaysTenp t1 = new DaysTemp".

Att du skapar två instanser av samma klass är för att du ska kunna lagra två olika värden samtidigt utan att skriva över de tilldelade värdena.

3b.
Ja och nej, t1 är en variabel som är en instans av klassen DaysTemp medan High är en egenskap som tillhör instansen t1. (Luddigt va?)

t1.High betyder, eller är egenskapen High från klassen DaysTemp som i sin tur lever i instansen t1.
Fruitness är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-09, 22:37 #3
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
För att förtydliga lite yttligare om du inte var med på vad en klass är. En klass kan kort sagt sägas vara en representation av ett objekt (t.ex. en databasuppkoppling, en xml-läsare eller en pennvässare). Till denna klass kan du skapa hur många egenskaper och funktioner som du vill / har behov av.

Klassen blir som en mall. När du vill använda klassen måste du skapa det som kallas för en instans av klassen och tilldela en variabel denna instans. Det är precis likadant som när du skapar en variabel som en sträng eller ett heltal.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-11, 09:45 #4
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Och ytterligare en förklaring:

Du kan i detta fall se DaysTemp klassen som en databärare: den har två properties som kan hålla data samt en (average) som gör en beräkning och returnerar den.
Så det var själva beskrivningen av klassen.

Sedan i din static void Main så bestämmer du dig för att använda dig av din DaysTemp klass. Du skriver då tex:

DaysTemp t1 = new DaysTemp();

... för att skapa en ny instans som heter t1. t1 är nu klar att användas som ett objekt av typen DaysTemp.

Raderna under så bestämmer du att du ska populera de properties som t1 nu har, exempelvis:

t1.High = 58;

...och...

t1.Low = 40;

Din kod skriver sedan ut medelvärdet genom att använda sig av t1.Average()

Så...det var ytterligare ett svar på ditt problem
Robert är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 13:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017