Как поменять значения экземпляров класса друг с другом C#
Использую метод для замены значений экземпляров класса друг с другом вот так
void Change(ref Array_member V1, ref Array_member V2)
{
Array_member V;
V = V1;
V1 = V2;
V2 = V;
}
Но это работает не так как я хочу. Я сам толком разобраться не могу, но кажется что значения индексатора меняются, а значения полей и свойств нет. Вот код класса
class Array_member
{
internal int Index { get; set; }
internal int Value { get; set; }
internal int GrHeigth { get; set; }
internal int x { get; set; }
static internal int GrWidth, YCoef;
internal SolidBrush brush;
internal static Array_member[] members = new Array_member[10];
public Array_member this[int index]
{
get {
return members[index];
}
set { members[index] = value; }
}
public static Bitmap bmap = new Bitmap(800,500);
public static Graphics display = Graphics.FromImage(bmap);
internal void DrawMember()
{
GrHeigth = YCoef * Value;
display.FillRectangle(brush, x, GrHeigth, GrWidth, 500);
}
public static bool operator <(Array_member a1, Array_member a2)
{
return a1.Value < a2.Value;
}
public static bool operator >(Array_member a1, Array_member a2)
{
return a1.Value > a2.Value;
}
}
Ответы (1 шт):
Автор решения: return
→ Ссылка
public static void Swap<T>(ref T a, ref T b)
{
var tmp = a;
a = b;
b = tmp;
}
for (int i = 1; i < Array_member.members.Length; i++)
{
if (Array_member.members[i] < Array_member.members[i - 1])
{
Swap(ref Array_member.members[i].Index, ref Array_member.members[i - 1]);
Swap(ref Array_member.members[i], ref Array_member.members[i - 1]);
}
}