Пишу ерундовый класс в MVS для работы с координатами.Возникла ошибка,причину которой я не могу понять.Вот класс:
public class Pointer
{
public int x, y;
public int this [int i]
{
get {<-----Вот здесь ошибка}
{
switch (i)
{
case 0:
return x;
case 1:
return y;
}
}
set
{
switch (i)
{
case 0:
x = value;
break;
case 1:
y = value;
break;
}
}
}
public Pointer(int x, int y)
{
this.x = x;
this.y = y;
}
public Pointer(Pointer rhs)
{
this.x = rhs.x;
this.y = rhs.y;
}
public static Pointer operator + (Pointer lhs, Pointer rhs)
{
Pointer Result = new Pointer(lhs);
Result.x += rhs.x;
Result.y += rhs.y;
return Result;
}
}
что-то мне подсказывает что он пытается тебе сообщить о том, что возможны варианты при которых нечего будет вернуть при вызове get, попробуй в свитч добавить что-нибудь в дефолт.
Я кстати это пробовал сразу,не помогло..что как-то странно..
А вот так:
get
{
switch (i)
{
case 0:
return x;
}
return y;
}
Точняк! Респект Volvo. +1 обоим за то что обратили внимание..
Я опять с проблемой - связался с IEnumerator:
(как сделать согласование между public и private ну или сто-то вроде того)
public class Pointer : IEnumerable<Pointer>
{
private class PointerEnumerator : IEnumerator<PointerEnumerator>
{
Pointer myPointer;
int count;
public PointerEnumerator(Pointer myPointer)
{
this.myPointer = myPointer;
count = -1;
}
public bool MoveNext()
{
++count;
return (count > 1) ? false : true;
}
public object Current
{
get
{
if (count < 0 || count > 1)
writeln("Проблема с перечислителем!");
return myPointer[count];
}
}
public void Reset()
{
count = -1;
}
}
public int x, y;
public IEnumerator<PointerEnumerator> GetEnumerator() //<=---Тут ошибка.Видать что-то с private и public
{
return new PointerEnumerator(this);
}
public int this [int i]
{
get
{
switch (i)
{
case 0:
return x;
}
return y;
}
set
{
switch (i)
{
case 0:
x = value;
break;
case 1:
y = value;
break;
}
}
}
public Pointer(int x, int y)
{
this.x = x;
this.y = y;
}
public Pointer(Pointer rhs)
{
this.x = rhs.x;
this.y = rhs.y;
}
public static Pointer operator + (Pointer lhs, Pointer rhs)
{
Pointer Result = new Pointer(lhs);
Result.x += rhs.x;
Result.y += rhs.y;
return Result;
}
}
Про глупости эт ты прям в яблочко! Спасиб за совет!