AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C# ist komisch

Ein Thema von Boombuler · begonnen am 25. Aug 2006 · letzter Beitrag vom 25. Aug 2006
Antwort Antwort
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#1

C# ist komisch

  Alt 25. Aug 2006, 11:32
Hi

ich hab gerad mal was sonderlich cooles entdeckt!
Bin gerad dabei Code von Delphi auf C# zu portieren dabei ist mir ein kleiner Fehler unterlaufen...

Code:
{
    string var1 = "2004";
    string var2 = "2006";
    string var3 = var1 + '-' + var2;
    label1.Text = var3;
}
Ok ich hätte dran denken sollen, das man Strings in C# mit " einleitet und nicht mit ' aber was denkt ihr was bei mir nachher im Label1 stand???

Antwort: 4055

Die Lösung ist: 2004 + 2006 + Ord('-')



Ich frag mich ob das n Mangel in der Sprache oder im Compiler ist das er mir sowas ermöglicht!

Greetz
Boombuler

PS: Bitte nich wundern das ich n bischen ohne Zusammenhang schreib ich bin noch geschockt von dieser Aktion!
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 30. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: C# ist komisch

  Alt 25. Aug 2006, 11:35
Das ist eine ganz einfache Regel: Strings, die nur ein Zeichen enthalten dürfen mit ''-Zeichen geschrieben werden. Das funktioniert z.B. auch mit "Hallo"+'\n', weil \n nur ein Zeichen darstellt. Der Modale wert wird genommen, weil im ganzen String kein Buchstabe vorkommt und der Kompiler deswegen "gedacht" hat, du wolltest rechnen...
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: C# ist komisch

  Alt 25. Aug 2006, 11:51
Zitat von Boombuler:
Hi

ich hab gerad mal was sonderlich cooles entdeckt!
Bin gerad dabei Code von Delphi auf C# zu portieren dabei ist mir ein kleiner Fehler unterlaufen...

Code:
{
    string var1 = "2004";
    string var2 = "2006";
    string var3 = var1 + '-' + var2;
    label1.Text = var3;
}
Ok ich hätte dran denken sollen, das man Strings in C# mit " einleitet und nicht mit ' aber was denkt ihr was bei mir nachher im Label1 stand???

Antwort: 4055

Die Lösung ist: 2004 + 2006 + Ord('-')
Kann ich nicht nachvollziehn
Bei mir steht da ganz normal "2004-2006" im Label, so wie es sein sollte.

Zitat von CK_CK:
Das ist eine ganz einfache Regel: Strings, die nur ein Zeichen enthalten dürfen mit ''-Zeichen geschrieben werden.
'\n' ist kein string Das ist ein char! Strings werden mit doppelten Hochkommas gekennzeichnet, und wenn ich einen String, also einen nicht ordinalen Typ will, (auch wenn er nur ein Zeichen lang ist), dann nehm ich die <">, wenn ich hingegen einen char will, der immer eine konstante groesse hat, den ich auf nen int casten kann, dann nehme ich <'>.

Zitat von CK_CK:
Der Modale wert wird genommen, weil im ganzen String kein Buchstabe vorkommt und der Kompiler deswegen "gedacht" hat, du wolltest rechnen...
Das will ich aber nicht hoffen! Wenn ich rechnen will, nehm ich integer, und ich traue dem Compiler diese "unintelligenz" auch nicht zu. Wir sind hier doch nicht bei php

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 30. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: C# ist komisch

  Alt 25. Aug 2006, 12:01
Ja, hast recht, ich meinte Char...
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#5

Re: C# ist komisch

  Alt 25. Aug 2006, 12:19
Zitat von JasonDX:
Zitat von Boombuler:
Hi

ich hab gerad mal was sonderlich cooles entdeckt!
Bin gerad dabei Code von Delphi auf C# zu portieren dabei ist mir ein kleiner Fehler unterlaufen...

Code:
{
    string var1 = "2004";
    string var2 = "2006";
    string var3 = var1 + '-' + var2;
    label1.Text = var3;
}
Ok ich hätte dran denken sollen, das man Strings in C# mit " einleitet und nicht mit ' aber was denkt ihr was bei mir nachher im Label1 stand???

Antwort: 4055

Die Lösung ist: 2004 + 2006 + Ord('-')
Kann ich nicht nachvollziehn
Bei mir steht da ganz normal "2004-2006" im Label, so wie es sein sollte.
Das war nur ein Beispiel Code... var3 war im orginal Code ein Element eines Objekt-Arrays und wie gesagt das ich das mit ' gemacht hab war nur ein Copy-Paste Fehler von mir weil es im Orginal Delphi Code war!

Greetz
Boombuler

Edit: bei .NET 2.0 ist das Problem gefixt, es trat nur auf .NET 1.1 auf!
Edit2: Seltsam bei einem leeren Beispiel Projekt tritt der Fehler nicht auf!
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: C# ist komisch

  Alt 25. Aug 2006, 13:30
Zitat von Boombuler:
Das war nur ein Beispiel Code... var3 war im orginal Code ein Element eines Objekt-Arrays
Waren nicht zufällig Int32-referenzen in dem Array, die du auch auf Int32 geprügelt hast?
Zitat:
Edit: bei .NET 2.0 ist das Problem gefixt, es trat nur auf .NET 1.1 auf!
Edit2: Seltsam bei einem leeren Beispiel Projekt tritt der Fehler nicht auf!
Nope, solch ein Blödsinn ist schlecht möglich, außer der *Compiler*[1] emitiert sowas hier:
Code:
string var2 = (2004 + ((Int32)'-') + 2006).ToString();
Und in dem Moment, in dem sich C# so benehmen würde würde sich Herr Hejlsberg aus purer Scham erschießen.
Sowas mag für Skriptsprachen wie dieser MS Basic dialekt oder PHP OK sein, aber nicht für eine Programmiersprache.

[1]Die CLR würde solchen Blödsinn jedenfalls garantiert nicht ermöglichen....
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: C# ist komisch

  Alt 25. Aug 2006, 14:20
Zitat von Boombuler:
ich hab gerad mal was sonderlich cooles entdeckt!
Bin gerad dabei Code von Delphi auf C# zu portieren dabei ist mir ein kleiner Fehler unterlaufen...
Code:
{
    string var1 = "2004";
    string var2 = "2006";
    string var3 = var1 + '-' + var2;
    label1.Text = var3;
}
Sollten Strings nicht mit einem StringBuilder zusammengesetzt werden, dabei dem + Operator jedesmal neue Objekte im Speicher generiert werden?

Der StringBuilder fängt auch nicht an zu rechnen
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: C# ist komisch

  Alt 25. Aug 2006, 14:39
MaBuSE: Ich hab einen interessanten Link zum Thema '+' vs. StringBuilder
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz