【发布时间】:2018-04-02 02:26:25
【问题描述】:
假设有一个基类
class base
{
int x, y;
}
还有 3 个派生的 singleton 类 A、B、C,其中 x、y 初始化为某个值。
示例:
class A : base { x = 1; y = 0;}
class B : base { x = 0; y = 1;}
class C : base { x = 1; y = 1;}
有没有办法将类作为参数传递给方法并访问该类的变量值。所以,一个可以更新所有 3 个类的值的函数。
意图:
int call (type classtype)
{
int xvalue = classtype.x;
int yvalue = classtype.y;
}
我在一些帖子中看到了 activator.CreateInstance(classtype) How to pass a Class as parameter for a method? [duplicate]
但它没有回答我们如何访问该类的变量。
【问题讨论】:
-
它应该是
int call (base classtype),你会传递实例化的对象。 -
type 没有这些变量。该类型的 Instances 具有这些变量,因此具有 type 不会给您任何变量。
-
请显示“类 A,B”的代码 - 非常不清楚 @Servy 所说的“类的变量值”是什么意思。您可能指的是静态类字段/属性 或 实例字段/属性 - 如果代码实际上是 C# 而不是某种伪语言,那就很清楚了。
-
@AlexeiLevenkov :我知道类型不提供任何变量。这就是为什么我将其解释为回报的意图。此外,A、B 和 C 只不过是扩展相同的变量并初始化为让我们 A(1,0) B(0,1) 和 C(1,1)。现在我期待更新这些初始化值运行时。我不想为 3 个类实现 3 个函数,所以想知道我们是否可以简单地为所有 3 个类实现一个泛型。
标签: c# function class oop parameter-passing