C#从其他类调用变量
这可能很简单,但我一直只创建了一个大类,从未尝试过创建干净的代码。现在我正在尝试并经历错误 因此,这是一个想法:C#从其他类调用变量,c#,class,oop,methods,call,C#,Class,Oop,Methods,Call,这可能很简单,但我一直只创建了一个大类,从未尝试过创建干净的代码。现在我正在尝试并经历错误 因此,这是一个想法: class1 { method1 { value 1; value 2 } method2 { value 3; value 4 } method3 { uses method4 from class2 } } class2 { method4 { uses values 1-4 from class1 } } 我在方法4中调用:class1c1=
class1
{
method1 { value 1; value 2 }
method2 { value 3; value 4 }
method3 { uses method4 from class2 }
}
class2
{
method4 { uses values 1-4 from class1 }
}
我在方法4中调用:class1c1=newclass1()
,在方法3中调用class2c2=newclass2
这就是发生的情况:
,method1
产生method2
值1-4
- 方法3调用
class2 c2=newclass2
- 我进入
,然后进入class2
,得到null/0值,而不是我在第一步中得到的值method4
public class MyTestClass
{
public int MyAge;
}
这是一个字段-字段应该是私有的,我们应该使用属性来公开该字段。但是,如果您这样做了,那么您可以这样访问:
var foo = new MyTestClass();
var hisAge = foo.MyAge;
当然,根据您的需求,您可能不希望用户直接访问变量,而是希望在对其他变量进行一些计算后获得一个值
您可以这样做:
public class MyTestClass
{
private int _gamesPlayed;
private int _gamesLost;
public int NumberOfWins { get { return _gamesPlayed - _gamesLost; } }
}
NumberOfWins是一个属性。它计算两个字段的值并重新计算。看看我们是如何使用私有修饰符的,这些修饰符在该类的范围之外是看不到的。NumberOfWins的访问方式与前面示例中的MyAge相同
老实说,听起来您更喜欢使用伪代码,或者您是一个初学者
我建议查看以下文章,了解更多关于我所说内容的信息
method4
中创建class1
的新实例,而应该将当前的class1
实例(通过this
在method3
中访问)作为参数传递给此方法,以获得相同的结果。好的,这里有一些代码供您使用。我不确定这是否是你所需要的。不过,这可能会帮助你开始。您可以在此处尝试运行它:
这是Class1
。它通过属性公开其部分数据
public class Class1
{
// these are properties
public int Value1 { get; set; }
public int Value2 { get; set; }
public int Value3 { get; set; }
public int Value4 { get; set; }
public void Method1()
{
Value1 = 1;
Value2 = 2;
}
public void Method2()
{
Value3 = 3;
Value4 = 4;
}
public void Method3()
{
// uses method4 from class2
var c = new Class2();
c.Method4();
}
}
public class Class2
{
public void Method4()
{
//uses values 1-4 from class1
var c = new Class1();
c.Method1();
c.Method2();
Console.WriteLine(c.Value1);
Console.WriteLine(c.Value2);
Console.WriteLine(c.Value3);
Console.WriteLine(c.Value4);
}
}
这是Class2
。它从Class1
调用方法并访问其属性
public class Class1
{
// these are properties
public int Value1 { get; set; }
public int Value2 { get; set; }
public int Value3 { get; set; }
public int Value4 { get; set; }
public void Method1()
{
Value1 = 1;
Value2 = 2;
}
public void Method2()
{
Value3 = 3;
Value4 = 4;
}
public void Method3()
{
// uses method4 from class2
var c = new Class2();
c.Method4();
}
}
public class Class2
{
public void Method4()
{
//uses values 1-4 from class1
var c = new Class1();
c.Method1();
c.Method2();
Console.WriteLine(c.Value1);
Console.WriteLine(c.Value2);
Console.WriteLine(c.Value3);
Console.WriteLine(c.Value4);
}
}
这将同时使用关闭和显示结果:
using System;
public class Program
{
public static void Main()
{
var c1 = new Class1();
c1.Method3();
}
}
你需要更具体一些。。。
一班
{
类别2(u类别2);;
公共一级(二级二级)
{
_类别2=类别2;
}
公开作废方法3()
{
//调用_class2.method4()
}
}
二级
{
1类(u类);
公共2级(1级)
{
_class1=class1;
}
公开作废方法4()
{
//调用_class1.MethodWhatever()
}
}
您想要实现什么,以及class1如何链接到class2,现在还不清楚。如果您的类2只对第一个类有用,那么(并且只有在那时),您可以使用嵌套类
class OuterClass {
string value1;
string value2;
string value3;
// ...
class InnerClass
{
OuterClass o_;
public InnerClass(OuterClass o)
{
o_ = o;
}
public string GetOuterString()
{
return o_.value1 + o.value2 + o.value3; //...
}
}
void SomeFunction()
{
InnerClass i = new InnerClass(this);
i.GetOuterString();
}
}
这将创建一个从内部类(类2)到外部类的清晰绑定。但这并不容易
编辑:好的,编辑后我看到一个完全不同的故事。你确定这是c#吗?如果你想共享数据,那么这些应该是类属性,而不是局部变量
class1
将需要一个class2
的实例(例如class2 c2=new class2()
使用它的方法和属性。你能发布一些实际的代码,而不是一些很难理解的伪代码吗?不要担心,如果它错了,我们可以修复它。你可以不展示想法,而展示实际的代码吗?@RonBeyer是的,我会做编辑。请改为使用MyAge
属性。谢谢你的提示,我想我是慢慢地了解我应该做什么,同时我添加了代码,如果你想看看它会很棒,给我一些如何将一些值更改为属性的提示。谢谢你的提示,我想我正在慢慢地了解我应该做什么,同时我添加了代码,如果你想看看它会很棒,给我一些如何更改的提示将一些值转换为属性是的。您必须重写代码。您最初发布的代码实际上不是C#代码。它是其他语法。