2015-07-13 3 views
2

Я уверен, что это вопрос низкого уровня, но я не могу найти ответ на этот вопрос.Можем ли мы реализовать полиморфизм в структуре?

Я придерживаюсь мнения, что структура не поддерживает полиморфизм, но старший из моих (в интервью) говорит, что это возможно.

Может кто-нибудь рассказать?

+1

Можете ли вы предоставить немного кода? просто спорить о своем посте? –

ответ

0

Я думаю, вы имеете в виду полиморфизм времени выполнения (метод перегрузки). Я не думаю, что вы можете сделать это с помощью Structs, поскольку структуры не поддерживают наследование.

Вы можете обратиться к this article или this article

+0

Вы имеете в виду полиморфизм времени выполнения (переопределение метода). Это означает, что мы можем выполнять компиляцию временного полиморфизма? – Vicky

+0

да, мы можем сделать компиляцию полиморфизма времени – ViSu

0

Я думаю, что мы можем сделать время компиляции полиморфизм, но не Runtime.I попробовал код, приведенный ниже, и к моему удивлению, это сработало!

Я пробовал код и компилировал полиморфизм времени. Код ниже, но тогда почему полиморфизм во время выполнения не разрешен. Я не получил этого, но на данный момент я думаю, что получил решение.

Оценены любые комментарии или рекомендации.

using System; 
struct SimpleStruct 
{ 
    private int xval; 
    public int X 
    { 
     get 
     { 
      return xval; 
     } 
     set 
     { 
      if (value < 100) 
       xval = value; 
     } 
    } 
    public void DisplayX() 
    { 
     Console.WriteLine("The stored value is: {0}", xval); 
    } 
    public void DisplayX(int a) 
    { 

     Console.WriteLine("The stored value is: {0}", a); 
    } 
} 

class TestClass 
{ 
    public static void Main() 
    { 
     SimpleStruct ss = new SimpleStruct(); 
     ss.X = 5; 
     ss.DisplayX(); 
     ss.DisplayX(3); 
     Console.ReadLine(); 
    } 
} 
0

Хммм я думаю о том, что структура может реализовать интерфейс ...

Например:

public interface IPoint 
{ 
    int X {get;set;} 
    int Y {get;set;} 
} 
public struct Point : IPoint 
{ 
    public int X { get; set; } 
    public int Y { get; set;} 
} 

public struct AnotherPoint : IPoint 
{ 
    public int X { get; set; } 
    public int Y { get; set; } 
} 

public static void Main() { 
    var arr = new IPoint [2]; 
    arr [0] = new Point() { X = 2 }; 
    arr [1] = new AnotherPoint() { X = 7 }; 

    foreach (var p in arr) { 
     Console.WriteLine (p.X); 
    } 
    Console.ReadKey(); 
} 
Смежные вопросы