假設我有三個班級p,p1和p2
public class p
{
public p() {}
}
public class p_1 : p
{
public p_1() {}
public string tester = "ABC";
}
public class p_2 : p
{
public p_2() {}
public string foo = "Test";
}
現在我想創建一個該型別的通用變數,p然后將其用作 type p_1。然后我想訪問tester里面的變數。
p p_tester;
p_tester = new p_1();
Console.Writeline(p_1.tester);
我的問題是:為什么我不能訪問 .tester 變數?我錯過了什么嗎?Visual Studio 想讓我宣告主類中子類的所有變數......但這不是我想要的。
這可能是我嘗試做的嗎?
uj5u.com熱心網友回復:
我發現這樣做的唯一方法是投p_tester作為p_1。我確定的一件事是您無法p_1直接訪問,因為您的類不是靜態的。您只能訪問宣告的實體p_tester
p p_tester;
p_tester = new p_1();
Console.WriteLine(((p_1)p_tester).tester);
uj5u.com熱心網友回復:
您的宣告功能是錯誤的。為什么不通過子類訪問它?
p_1 p_tester;
p_tester = new p_1();
Console.WriteLine(p_tester.tester);
如果您想訪問測驗器表單子類 p_1() 那么您可以將測驗器設定為靜態變數。
public class p_1 : p
{
public p_1() {}
public static string tester = "ABC";
}
Console.WriteLine(p_1.tester);
uj5u.com熱心網友回復:
看來你真的需要一個override屬性
public class p
{
public p() {}
public virtual string StringValue { get; }
}
public class p_1 : p
{
public p_1() {}
public string tester = "ABC";
public override string StringValue => tester;
}
public class p_2 : p
{
public p_2() {}
public string foo = "Test";
public override string StringValue => foo;
}
您現在可以使用 p_tester.StringValue
p p_tester = new p_1();
Console.Writeline(p_1.StringValue);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/364941.html
下一篇:TO_DATE格式SQL
