Avatar billede kennedk Nybegynder
11. september 2007 - 20:40 Der er 28 kommentarer og
1 løsning

Problemer med SIMPEL klasse

Hej.
jeg er lige begyndt på .net i skolen her for to dage siden, og de koder i vb, eller det gør jeg også, men jeg vil gerne bruge c# da syntaksen minder meget om php, som jeg startede med at arbejde i.
Så her kommer mit problem, som jeg har i c# men ikke i vb..

class fil:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for OOPTest
/// </summary>
namespace MyNameSpace
{
    public class IntFunctions
    {
      public object AddFunction(int tal1, int tal2){
          return tal1 + tal2;
      }
    }

    public class strFunctions
    {
        public object strUpper(String Tekst){
            return Tekst.ToUpper();
        }
        public object strLower(String Tekst){
            return Tekst.ToLower();
        }
    }

}

og min side, hvor det skal udskrives

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MyNameSpace;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        IntFunctions LOL = new IntFunctions();
        strFunctions strOOPTest = new strFunctions();
        Label1.Text = LOL.AddFunction(1, 2);
        Label2.Text = strOOPTest.strLower("hej");

    }
}

og fejlen den skriver er:
Typen 'object' kan ikke konverteres implicit til 'string'. Der findes en eksplicit konvertering (mangler der en cast?)

Fejlen er der to gange i linie 18 og 19, og det er på default.aspx.cs den er i.

Håber i kan hjælpe her i aften
Avatar billede nielle Nybegynder
11. september 2007 - 20:44 #1
Ret til:

    public class strFunctions
    {
        public string strUpper(String Tekst){
            return Tekst.ToUpper();
        }
        public string strLower(String Tekst){
            return Tekst.ToLower();
        }
    }
Avatar billede kennedk Nybegynder
11. september 2007 - 20:48 #2
okay :)
nu du siger det så har jeg hørt noget om at hvis man bruger en function i vb, så kan der være forskellige i c#

altså ret mig hvis jeg er forkert.
public string test() - er til functioner der retunere strenge
public Object test() - er til functioner der retunere tal
Er det korrekt?

og hvad er der eller af muligheder?
Avatar billede kalp Novice
11. september 2007 - 20:49 #3
public int test()

returnerer et tal..

Object er det alle klasser arver fra, så alt kan teknisk set komme ind under det;)
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:49 #4
Forkert :-)

public RETURTYPE FunktionensNavn
Avatar billede nielle Nybegynder
11. september 2007 - 20:51 #5
> public Object test() - er til functioner der retunere tal

Nej.

Tal er enten Integer eller Float eller en af de tilsvarende typer.
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:51 #6
Dvs:
Erstat RETURTYPE med den type du vil sende tilbage..

Eksempel:
int = tal
string = string
object = objekt
bool = boolean (sand/falsk)
List<KlasseInstans> = Liste af KlasseInstans

osv..
Avatar billede kalp Novice
11. september 2007 - 20:52 #7
kennedk >> Godt nok er det her java, men det er helt underordnet.. læs den så tror jeg du forstår det bedre:)
http://www.eksperten.dk/artikler/608
Avatar billede kennedk Nybegynder
11. september 2007 - 20:52 #8
aah på det måde.
Nu har jeg altså
namespace MyNameSpace
{
    public class IntFunctions
    {
      public int AddFunction(int tal1, int tal2){
          return tal1 + tal2;
      }
    }

    public class strFunctions
    {
        public string strUpper(String Tekst){
            return Tekst.ToUpper();
        }
        public string strLower(String Tekst){
            return Tekst.ToLower();
        }
    }

}

Men den brokker sig i linie 18, som er
public int AddFunction(int tal1, int tal2){

Med fejlen :
Typen 'int' kan ikke implicit konverteres til 'string'
Avatar billede kalp Novice
11. september 2007 - 20:54 #9
der hvor du kalder din metode skal du også kalde tostring.... dvs..

AddFunction(2,3).ToString()
Avatar billede kalp Novice
11. september 2007 - 20:54 #10
forklaring: Du prøver at gemme et tal i en string variabel.
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:54 #11
Problemet er nok, at du vil have et tal over i en streng..

Hvordan ser linien ud, der kalder funktionen?
Avatar billede nielle Nybegynder
11. september 2007 - 20:54 #12
Grunden til at VB.NET et lidt large mht. hvordan du skriver tingene er at sikkerhedsinstillingerne ikke er så stramme i VB.NET som i C# - hvorfor de ikke er det er historisk betinget; sådan var die i VB Script.

Hvis du ønsker at forcere at det skal vøre skrevet ordentligt, kan du f.eks. bruge Option Exact.
Avatar billede nielle Nybegynder
11. september 2007 - 20:55 #13
Rettes til:

    public class IntFunctions
    {
      public int AddFunction(int tal1, int tal2){
          return tal1 + tal2;
      }
    }
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:55 #14
nielle> Mener du ikke Option Explicit?
Avatar billede nielle Nybegynder
11. september 2007 - 20:56 #15
Ahh det havde du jo allerde gjort :^)
Avatar billede nielle Nybegynder
11. september 2007 - 20:56 #16
11/09-2007 20:55:39> Nemlig, ja!
Avatar billede nielle Nybegynder
11. september 2007 - 20:57 #17
For at slippe af med din fejl:

Label1.Text = LOL.AddFunction(1, 2).ToString();
Avatar billede thesurfer Nybegynder
11. september 2007 - 20:58 #18
Eller fusker metoden:

Label1.Text = "" + LOL.AddFunction(1, 2);

Alle de steder hvor "" er på højre side af "=" vil blive betragtet som en streng..
Avatar billede kennedk Nybegynder
11. september 2007 - 20:59 #19
nielle, nu har jeg rettet til det du sagde, men der giver fejl. lige for at opdatere jer :
class fil:
namespace MyNameSpace
{
 
    public class IntFunctions
    {
        public int AddFunction(int tal1, int tal2)
        {
            return tal1 + tal2;
        }
    }

    public class strFunctions
    {
        public string strUpper(String Tekst){
            return Tekst.ToUpper();
        }
        public string strLower(String Tekst){
            return Tekst.ToLower();
        }
    }

}

default.aspx.cs
using MyNameSpace;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        IntFunctions LOL = new IntFunctions();
        strFunctions strOOPTest = new strFunctions();

        Label1.Text = LOL.AddFunction(1, 2).ToString;
        Label2.Text = strOOPTest.strLower("hej").ToString;

    }
}

Den skriver:
Metodegruppen 'ToString' kan ikke konverteres til ikke-stedfortrædertypen 'string'. Ønskede du at kalde metoden?

i linie 19 og 20
Avatar billede kalp Novice
11. september 2007 - 20:59 #20
du skal skrive ToString() og ikke ToString
Avatar billede kennedk Nybegynder
11. september 2007 - 21:01 #21
ja så jeg sgu lige :)
Jeg takker mange mange gange alle sammen, synes i har været til hjælp alle sammen
HVordan skal jeg fordele mine points?
Avatar billede nielle Nybegynder
11. september 2007 - 21:02 #22
... og der er ikke nogen grund til at gøre det i denne:

Label2.Text = strOOPTest.strLower("hej");

Resultatet af strLower() er jo allerede en streng.
Avatar billede kalp Novice
11. september 2007 - 21:02 #23
Du beder bare de 2 andre lægge et svar... så kan du markere begge deres navne og accepterer:) Behøver ikke point;)
Avatar billede nielle Nybegynder
11. september 2007 - 21:03 #24
Svar :^)
Avatar billede thesurfer Nybegynder
11. september 2007 - 21:03 #25
Jeg springer bare over :-)

kalp> Du burde få points for http://www.eksperten.dk/artikler/608 ..
Avatar billede kennedk Nybegynder
11. september 2007 - 21:04 #26
Så er det bare sidste mand der mangler :) Siger endnu en gang mange tak
Avatar billede kalp Novice
11. september 2007 - 21:07 #27
thesurfer >> det er okay:) Har gjort artiklen gratis for længe siden:)
Avatar billede nielle Nybegynder
11. september 2007 - 21:12 #28
Tak for point :^)
Avatar billede kennedk Nybegynder
11. september 2007 - 21:15 #29
selv tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester