【问题标题】:Property out of scope in C# functionC# 函数中的属性超出范围
【发布时间】:2013-11-11 15:29:17
【问题描述】:

我有以下问题: 我有 2 个类,比如说 class1 和 class2,我在我的主类中创建。 在 class2 代码中,我尝试访问具有 get 方法的 class1 属性 GetFieldValue。 我试图这样做:

int fieldName;  
fieldName = main.class1.GetFieldValue;

编译器告诉我: 非静态字段、方法或属性需要对象引用......

有没有办法做这样的事情? 我希望我已经清楚了:)

【问题讨论】:

  • 向我们展示您的实例创建 - 看起来您只是在此处访问类型。
  • 如果你想在没有类实例的情况下访问它,你的属性应该是staticGetFieldValue 也不是一个好名字。
  • 类实例是这样创建的: ClassName istanceName = new ClassName();我知道我一直使用的名字不好,但目前我没有真正的代码!谢谢大家!

标签: c# scope


【解决方案1】:

有很多方法可以给这只猫剥皮;但我建议只将Class1 的实例注入Class2,如下所示:

private Class1 _c1;

public Class2 (Class1 c1)
{
    _c1 = c1;
}

然后是:

_c1.GetFieldValue

请记住,GetFieldValue 必须是 publicinternal 才能访问它。

所以现在,当你创建 Class2 时,你会这样做:

var c2 = new Class2(c1);

其中c1Class1 的一个实例。

【讨论】:

  • 是的,我知道我可以将它传递给我的函数并将其存储在相同的数据类型字段中,但是我必须传递的函数充满了东西,对我来说毫无用处,但我需要那个特定的字段!有没有办法在函数调用期间不传递任何东西来访问它?顺便说一句,非常感谢您的回复! :)
  • @user2979038,当然。正如我所说,给这只猫剥皮的方法不止一种。但是你需要一些架构。你打算在哪里存储对象的实例呢?您的问题中的main 是什么?您的问题中的main.class1 是什么?你在那里建立了任何架构吗?
  • 好的,抱歉不清楚。我在描述这件事时遇到了一些问题......我正在构建一个 xna 游戏并发布真实代码有点复杂,我尝试使用一些 sn-p 但结果更加复杂......假设我有一个类名为 Main 在女巫 I 中划分 2 个类,1 类和 2 类,都是公共的。我试图从 Class 2 内部访问 Class 1,使用如下 sintax: int var = Main.Class1.data;其中 data 是我要访问的 Class1 中的字段。
  • @user2979038,你需要在 Main 类上构建一个 Singleton,然后语法可能看起来更像 Main.Instance.Class1.data;
  • 非常感谢,我即将阅读 Microsort 的网站!你能给我推荐一本好的 c# 书吗?
猜你喜欢
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
相关资源
最近更新 更多