Chciałbym przeładować operator przypisania tak jak jest to w stringu += da sie tak ?
Czego tu nierozumiem pisze :
=, . , ?:, ->, new, is, as, sizeof These operators can't be overloaded
to jakim prawem do stringa można wpisać String alfa = "abc"; tzn. a jesli ja bym chciał odziedziczyć string i napisać własny operator = tak aby sprawdzał czy kod wpisywany do środka jest poprawny ... ???
nicka napisał(a)
Czego tu nierozumiem pisze :
=, . , ?:, ->, new, is, as, sizeof These operators can't be overloadedto jakim prawem do stringa można wpisać String alfa = "abc";
Te operatory nie dotyczą konkretnej klasy. Być może są zaimplementowane poza nimi. Szczerze mówiąc nigdy się nad tym nie zastanawiałem nad tym a to bardzo ciekawe pytanie.
class mea
{
public string alfa;
}
mea operator=(mea a,mea b)
{
}
take coś nie działa :/
Wow, to w C# można robić funkcje poza klasami?
Skoro = nie da się przeciążyć, to pewnie = nie da się przeciążyć. Żyj z tym.
A po co chcesz przeładować ten operator ? W czym Ci to ma pomóc ?
Rozróżnijmy może niejawną konwersję od operatora i życie stanie się prostsze.
using System;
namespace MyStringTest
{
class Program
{
static void Main(string[] args)
{
IntegerString s1 = new IntegerString("123");
IntegerString s2 = "456";
//IntegerString s3 = "ala ma kota"; //FormatException
string t = s2;
Console.WriteLine(s1);
Console.WriteLine(s2);
Console.WriteLine(t);
Console.ReadLine();
}
}
class IntegerString
{
int value;
public IntegerString(string str)
{
this.value = int.Parse(str);
}
public static implicit operator string(IntegerString str)
{
return str.value.ToString();
}
public static implicit operator IntegerString(string str)
{
return new IntegerString(str);
}
}
}
I co, nie da się?
dziękuje ślicznie :P o to chodziło .