[英]Getting the value of a local Field at run time
我對 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?
}
}
我一直在查看反射和其他與程序集相關的東西,但仍然沒有運氣。 任何建議將不勝感激。
這不是函數的工作方式。
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
沒有。
局部變量僅在您位於函數內部時存在。 退出函數后,局部變量消失在油膩的煙霧中。
您可以使用反射來訪問屬性(公共屬性和私有屬性)。
干杯,
亞當。
您無法訪問超出當前范圍的變量,無論是另一種方法,還是僅是另一種開關情況。 但是,沒有理由這樣做,您可以通過在方法中設置一個屬性來執行相同的操作:
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;
}
}
我還將屬性的公共獲取器與私有設置器結合使用,從而可以從類內部而不是外部更改Number
值。
其他人指出的另一種方法就是從func
返回值。
這是不可能的,因為無法從外部范圍訪問在Body中聲明的內容。 意味着您的變量僅在func()-Method內部可用。 您可以做的是返回所需的值或聲明一個屬性。
public int Func()
{
return 25;
}
public class MyProgram {
public static void Main() {
ClassToTest instance = new ClassToTest();
int number = instance.func();
//number will be 25
}
}
使用屬性可以像這樣工作:
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;
}
}
使用方法或屬性是您的決定。 但是您可以這樣認為:
“我的對象由什么組成”和“我的對象可以做什么”。
例如,一輛汽車有車輪。 因此,用屬性代表一個Wheel。 但是汽車可以移動,因此將移動實現為方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.