Finns det något enkelt sätt att se om alla värden i en array är lika i C#? >Finns det något enkelt sätt att se om alla värden i en array är lika i C#? jasså...var har du fått det ifrån? däremot var det lite andra fel... ska nog funka nu Jag kodar mest java men samma gäller för strängar i C#. En string är ett objekt och inte en primitiv datatyp. När man använder "==" för att jämföra två strängar så jämför man egentligen deras objektreferenser vilket är fel. Använd equals metoden på string objektet istället så blir det riktigt. nä, så är det tyvärr inte i c#... Jo, dom har rätt. Vad som händer när två strängar jämförs med "==" är nämligen att Equals utförs.SVÅR array fråga
Värdena är av typen string:
<code>
string [] pxlString = new string [13];
</code>
MVH Henrik LarssonSv: Lätt array fråga
ja du får väl loopa igenom alla värdena. typ så här:
<code>
bool equal=true;
string current=pxlString[0];
for(int i=1;i<pxlString.Length && equal;i++)
{
if(current==pxlString[i])
{
current=pxlString[i]; //rätt onödig men iallafall
}
else
{
equal=false; //hoppa ut när det är klart
Console.WriteLine("Pixel " + i.ToString() + " (" + pxlString[i] + ") hade inte samma värde som " + current);
}
}
</code>Sv: Lätt array fråga
Sv: Lätt array fråga
/KlasSv: Lätt array fråga
men man kan använda Equals iallafall...
<code>
string olle="olle";
string olle2="olle";
olle==olle2; //true i C# false i Java
olle.Equals(olle2); //true i C#, true i Java
</code>Sv: Lätt array fråga
Vad som händer i ditt exempel är att eftersom strängar inte kan förändras
så optimerar runtimen din kod och skapar en sträng med två referenser till sig.
Detta beteende är inte deterministiskt och du kan alltså inte räkna med att
detta alltid kommer att ske (även om din kod kommer fungera mestadels).Sv: Lätt array fråga
Så det spelar ingen roll om du använder "==" eller Equals.
Här kan du se hur Equals samt "==" fungerar i String klassen i .Net
<code>
public static bool Equals(String a, String b) {
if ((Object)a==(Object)b) {
return true;
}
if ((Object)a==null || (Object)b==null) {
return false;
}
return a.Equals(b);
}
public static bool operator == (String a, String b) {
return String.Equals(a, b);
}
</code>
/Fredrik Normén NSQAURED2
http://www.nsqaured2.net