从另一个类中的另一个方法访问变量

假设我在该文件中有一个ABC.CS文件,我有一个类ABC ,如下所示,方法Test()

 public class ABC { public static void Test() { int a=10; int b=11; int c=12; //many many variables } } 

我想在另一个文件的另一个方法的另一个方法中访问ab …等

  • 文件: XYZ.cs
  • 分类: XYZ
  • 方法: MyMethos()

注意 :变量可以是任何类型,如intfloatDataTable

更新似乎人们忽略了static关键字,请举例说明

我怎样才能做到这一点 ?

谢谢。

将变量声明为方法的publicstatic out

您只需使用ClassName.VariableName即可访问它们

希望这可以帮助..

你不能。 您应该在方法之外定义变量并将它们public 。或者,如果您的其他类inheritance自ABC那么您可以使它们protected

您无法通过reflection访问本地变量,但您可以访问静态变量

从理论上讲,你不能这样做,但如果你稍微改变一下这个方法,你就可以得到你想要的东西。

公开声明对象列表并从其他类访问它。

 public List differentVarColl = new List(); void MethodA() { int a = 0; int b = 10; double c = -90; DataTable dtData = new DataTable(); //Do rest of things differentVarColl.Add(a); differentVarColl.Add(b); differentVarColl.Add(c); differentVarColl.Add(dtData); } 

从其他方法,迭代列表并根据其类型将它们存储在新的一些变量中。

我希望这有帮助。

到目前为止我看到的其他答案正在给出我认为非常糟糕的建议。

如果没有更多专注的例子,很难说最好的方法是什么。 通常,您希望避免使用具有副作用的方法 – 这使得调试和测试应用程序变得更加困难。 基本上,如果使用相同的输入调用方法100次,它应该返回相同的结果100次。

一般来说,一个好的方法是让你的方法返回一些代表它正在执行的操作结果的东西。

因此,您有一个表示返回值的类或结构:

 public struct SomeMethodResult { public int WhateverProperty {get;set;} public int WhateverOtherProperty {get;set;} } 

然后根据需要返回该类的实例:

 public SomeMethodResult SomeMethod() { var result = new SomeMethodResult(); result.WhateverProperty = 1; result.WhateverOtherProperty = 2; //etc return result; } 

如果从Test中调用方法XYZ.myMethod,则myMethod必须是静态方法。 在这种情况下,对于值类型变量,使用ref为值类型调用方法。

如果您需要访问变量,因为您似乎需要直接使用类名或对象引用来访问数据表,您需要将变量声明为类变量并使其成为静态变量。

完成此操作后,尝试在静态构造函数中初始化数据表:

 static ABC() { ABC.SomeDataTableVariable = new DataTable(); } 

请试一试。

使用静态变量/函数是一回事; 从其范围之外访问变量是另一回事。

来自MSDN:

如果使用Static关键字声明局部变量,则其生命周期长于声明它的过程的执行时间。 如果过程在模块内部,只要应用程序继续运行,静态变量就会存在。

并且每个也存在静态变量,而不是实例。

所以,我假设你需要ABC类的实例

 public class ABC { private int a; //also you can add 'readonly' if you will not change this value in its lifetime private int b; private int c; public int A() { get { return a; } } public int B() { get { return b; } } public int C() { get { return c; } } public void Test() { a=10; b=11; c=12; //many many variables } } 

您可以致电其他课程:

 ABC abcInstance = new ABC(); abcInstance.Test(); //you set the values int aTemp = abcInstance.A(); // now you have the 'a' value of ABC's property.