如何将一个对象从主类调用到另一个C#

如何将一个对象从主类调用到另一个C#,c#,class,object,C#,Class,Object,我试图在C#中从一个类调用一个对象到另一个类。我该怎么做 以下是我的代码片段: public bool IsPositionFree(int x,int y) { if(x=Rows) { 返回false; } 返回迷宫[y,x]==“y,x]==“E”| |***这里是我想检查y,x是否等于我在屏幕上绘制的宝藏对象(宝藏t1)*; } 在我的主程序中,我创建了一个对象,这就是我想调用我的另一个类的对象 公共静态资源t1; 宝藏t1=新宝藏(1,3); 我的宝贝课是- class宝藏 { 公

我试图在C#中从一个类调用一个对象到另一个类。我该怎么做

以下是我的代码片段:

public bool IsPositionFree(int x,int y)
{
if(x<0 | | y<0 | | x>=Cols | | y>=Rows)
{
返回false;
}
返回迷宫[y,x]==“y,x]==“E”| |***这里是我想检查y,x是否等于我在屏幕上绘制的宝藏对象(宝藏t1)*;
}
在我的主程序中,我创建了一个对象,这就是我想调用我的另一个类的对象

公共静态资源t1;
宝藏t1=新宝藏(1,3);
我的宝贝课是-

class宝藏
{
公共整数x{get;set;}
公共整数y{get;set;}
公共弦金;
私人控制台颜色;
私有值=100;
公共宝藏(整数首字母X,整数首字母Y)
{
x=初始值x;
y=初始值;
Gold=“T”;
颜色=控制台颜色。黄色;
}
公共图书馆
{       
控制台颜色=颜色;
控制台。设置光标位置(x,y);
控制台。写(金);
}
}

将此添加到您的宝藏类:

public bool isLocationMatch(int x, int y) => x == this.x && y == this.y;
那你还有工作要做。您必须考虑如何让
IsPositionFree
了解
t1
。但是你还没有发布[mcve],所以我很难说你会如何使用新方法。你可以自己解决

调用看起来类似于
t1.isLocationMatch(x,y)



从设计角度来看,您可能需要考虑维护X/Y平面的模型。
对象的2d数组
或者基类?

将其添加到您的宝藏类中:

public bool isLocationMatch(int x, int y) => x == this.x && y == this.y;
那你还有工作要做。您必须考虑如何让
IsPositionFree
了解
t1
。但是你还没有发布[mcve],所以我很难说你会如何使用新方法。你可以自己解决

调用看起来类似于
t1.isLocationMatch(x,y)



从设计角度来看,您可能需要考虑维护X/Y平面的模型。
对象的2d数组
或基类可能?

假设您的
宝藏t1
是在
程序中定义的。。。
您的返回将如下所示:


返回迷宫[y,x]==“”| |迷宫[y,x]==“E”| |(x==Program.t1.x&&y==Program.t1.y);

假设您的
宝藏t1
是在
程序中定义的
。。。 您的返回将如下所示:


返回迷宫[y,x]==“”| |迷宫[y,x]==“E”| |(x==Program.t1.x&&y==Program.t1.y);

如果它们在同一命名空间中,您可以直接在一行中键入类名。 如果您不需要在类目标中导入,如:

“使用MyProject.Classes”

你有A班:

namespace ExampleNamespace
{
  public class ClassA 
  {
      public string  fieldA  {get;set;} 

      public void DoSomething(int variable)
      {
         //doing something
      }
  
   }
}
还有使用ClassA的ClassB:


using ExampleNamespace;

public class ClassB
{
    public string randomField  {get;set;} 

    public void DoSomethingButBetter(int variable)
    {
         ClassA classA = new ClassA();
         classA.DoSomething(1);
    }

}



如果它们在同一命名空间中,您可以直接在一行中键入类名。 如果您不需要在类目标中导入,如:

“使用MyProject.Classes”

你有A班:

namespace ExampleNamespace
{
  public class ClassA 
  {
      public string  fieldA  {get;set;} 

      public void DoSomething(int variable)
      {
         //doing something
      }
  
   }
}
还有使用ClassA的ClassB:


using ExampleNamespace;

public class ClassB
{
    public string randomField  {get;set;} 

    public void DoSomethingButBetter(int variable)
    {
         ClassA classA = new ClassA();
         classA.DoSomething(1);
    }

}



请发一封电子邮件。
珍藏哪些公共方法/字段
公开?你甚至定义了一个
宝藏
类了吗?@jwdonahue我现在添加了我的宝藏类不太确定你在问什么,但你的意思是要检查坐标是否与你的宝藏匹配:
如果(x==t1.x&&y==t1.y)//坐标匹配宝藏
IsPositionFree
与您的
t1
声明和初始化在同一类中:
公共静态宝藏t1;宝藏t1=新宝藏(1,3)?如果是,那么@RufusL为您提供了解决方案。否则,您必须在
t1
前面加上它所在的类的名称,即使用
SomeClassName.t1
。您是否看到了显示足够的代码以便其他人可以知道您的问题的好处?您遇到了什么问题?您已经将
x
y
值声明为公共属性。为什么你不能比较一下呢?请发一封邮件。
珍藏哪些公共方法/字段
公开?你甚至定义了一个
宝藏
类了吗?@jwdonahue我现在添加了我的宝藏类不太确定你在问什么,但你的意思是要检查坐标是否与你的宝藏匹配:
如果(x==t1.x&&y==t1.y)//坐标匹配宝藏
IsPositionFree
与您的
t1
声明和初始化在同一类中:
公共静态宝藏t1;宝藏t1=新宝藏(1,3)?如果是,那么@RufusL为您提供了解决方案。否则,您必须在
t1
前面加上它所在的类的名称,即使用
SomeClassName.t1
。您是否看到了显示足够的代码以便其他人可以知道您的问题的好处?您遇到了什么问题?您已经将
x
y
值声明为公共属性。为什么你不能比较它们呢?不确定这种方法是否真的有用,因为
x
和f
y
已经是公共属性了。@RufusL,请参阅。你最终会在需要测试宝藏的任何地方重复你自己,并且键入完整的逻辑表达式比
t1.isLocationMatch(x,y)
更容易出错。这对代码审查者来说也更容易。这是如何回答他的问题的呢?你给他一个教训,让他更困惑?告诉他还有很多工作要做?这是对OP问题的正确回答。我对你在这方面的困惑不负责任,我不明白你为什么在这一点上关心。OP将你的回答标记为答案,所以