我确信这是一个低级别的问题,但我无法找到这个问题的答案。
我认为结构不支持多态性,但我的高级(在一次采访中)说这是可能的。
有人可以告诉我吗?
答案 0 :(得分:0)
我认为你的意思是运行时多态(方法重载)。我不认为你可以用Structs做到这一点,因为结构不支持继承。
您可能需要参考this article或this article
答案 1 :(得分:0)
我认为我们可以进行编译时多态,但不能运行Runtime。我尝试了下面的代码,令我惊讶的是它工作了!
我尝试了代码并且编译时允许多态性.Code在下面但是为什么不允许运行时多态性我没有得到它但是现在,我认为我得到了解决方案。
感谢任何评论或指导。
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();
}
}
答案 2 :(得分: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 ();
}
答案 3 :(得分:0)
结构支持编译时多态(函数重载和运算符重载),但运行时多态不支持。结构不支持继承,运行时多态是通过基类和派生类的虚函数概念实现的。
由于结构不支持继承,因此它不能支持运行时多态性。