我是c#的新手,我只是想知道是否有可能在运行时获取本地声明的字段的值?比如说下面例子中的ClassToTest不能改变。
示例:
public class ClassToTest {
public void func() {
int number = 25;
}
}
Public class MyProgram {
public static void Main() {
ClassToTest instance = new ClassToTest();
instance.func();
// Can field "number" value be extracted here?
}
}
我一直在通过反思和其他装配相关的东西,但仍然没有运气。任何建议都将受到高度赞赏。
答案 0 :(得分:0)
这不是函数的工作方式。
public class ClassToTest {
public int func() {
return 25;
}
}
Public class MyProgram {
public static void Main() {
ClassToTest instance = new ClassToTest();
int number = instance.func();
}
}
返回值的函数应该有一个返回类型(即int)和一个return(即返回25;),然后当int number = instance.func();运行时,func()方法将返回25并将其存储到int number
答案 1 :(得分:0)
没有
只有在函数内部时,本地变量才存在。退出该功能后,局部变量会消失在一团油腻的烟雾中。
您可以使用反射来访问属性(公共和私有。)
干杯,
亚当。
答案 2 :(得分:0)
您无法访问超出当前范围的变量,无论是另一种方法,还是仅仅是另一种切换案例。但是没有理由这样做,您可以通过在方法中设置属性来实现相同的目的:
public class ClassToTest {
public int Number { get; private set; }
public void func() {
this.Number = 25;
}
}
Public class MyProgram {
public static void Main() {
ClassToTest instance = new ClassToTest();
instance.func();
var i = instance.Number;
}
}
我还使用了属性的公共getter与私有的setter一起使用,可以更改在你的类中的Number
- 值而不是来自外部。
其他人指出的另一种方法就是从func
返回值。
答案 3 :(得分:-1)
这是不可能的,因为身体中声明的内容无法从外部范围访问。意味着你的变量只能在你的func()中使用 - 方法。您可以做的是返回您需要的值或声明属性。
public int Func()
{
return 25;
}
public class MyProgram {
public static void Main() {
ClassToTest instance = new ClassToTest();
int number = instance.func();
//number will be 25
}
}
使用Property可以这样工作:
public class ClassToTest {
public int Number{get{return 25;};private set;}
}
Public class MyProgram {
public static void Main() {
ClassToTest instance = new ClassToTest();
int number = instance.Number;
}
}
使用方法或属性是您的决定。但你可以这样想:
"我的对象是什么?"和#34;我的对象可以做什么"。
例如汽车有车轮。因此,由物业代表一个轮子。但是汽车可以移动,所以实现运动作为方法。