如何将一个对象从主类调用到另一个C#
我试图在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宝藏 { 公
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
和fy
已经是公共属性了。@RufusL,请参阅。你最终会在需要测试宝藏的任何地方重复你自己,并且键入完整的逻辑表达式比t1.isLocationMatch(x,y)
更容易出错。这对代码审查者来说也更容易。这是如何回答他的问题的呢?你给他一个教训,让他更困惑?告诉他还有很多工作要做?这是对OP问题的正确回答。我对你在这方面的困惑不负责任,我不明白你为什么在这一点上关心。OP将你的回答标记为答案,所以