【发布时间】:2014-07-25 14:42:38
【问题描述】:
我想知道可以用 c++ 实现的东西,但我想用 C# 来实现。
如何从包含代码的类中将“指针”传递给一个类,从而允许我以 Foo.Bar() 的形式编写代码?
namespace Example
{
public class Foo
{
MainClass MainClass;
public void Bar()
{
var somethingElse = MainClass.A.SomethingElse;
var somethingDifferent = MainClass.B.SomethingDifferent;
}
}
public class MainClass
{
public string Something;
public SubClassA A = new SubClassA(this); // <<-- not valid in c#
public SubClassB B = new SubClassB(this); // <<-- not valid in c#
}
public class SubClassA
{
private MainClass _MainClass;
public SubClassA(MainClass mainClass)
{
_MainClass = mainClass;
}
public string SomethingElse {
get {
return _MainClass.Something + " Else";
}
}
}
public class SubClassB
{
private MainClass _MainClass;
public SubClassB(MainClass mainClass)
{
_MainClass = mainClass;
}
public string SomethingDifferent
{
get
{
return _MainClass.Something + " Different";
}
}
}
}
我应该声明,我知道我可以用一百万种方式重组我的代码以获得可行的结果,但我有一个具体的问题我希望回答! :)
谢谢
【问题讨论】:
-
将您的属性实现为静态的,这将允许通过类型名称而不是实例来访问它
-
@DStanley OP 已经提出了一个具体问题。他只是重申这是他想要回答的这个问题。
-
@slippyr4 我看不出它是如何工作的?它需要一个实例?
-
@Beakie 我最初误解了这个问题 - OP 希望使用 Foo.Bar() 形式(其中 Foo 是一种类型)意味着 Bar() 需要是静态的(因为你可以' t 调用类型的实例方法)。现在我认为“Foo”部分要么模棱两可,要么是错字。
-
回答您的问题:您可以在其构造函数/方法中传递
this。