[英]Why can't we access properties of PageModel derived class in asp-for via Model property?
[英]Why can't we access a base property outside of a method in derived class?
我遇到了這個問題:
namespace ClassLibrary3
{
public class Class1
{
public int a { get; set; }
public int A { get; set; }
}
public class test : Class1
{
a=1; // error 'ClassLibrary3.Class1.a' is a 'property' but is used like a 'type'
public void hello()
{
a = 10;
}
}
}
Marc Gravell 說“除了字段初始值設定項之外,代碼必須在方法中”。
為什么派生的 class 不能訪問方法外部的屬性? 這背后的原因是什么?
您不能將任何代碼放在方法之外(字段初始值設定項除外)。
所有代碼都需要有一個特定的時間點才能執行。
具體來說,代碼將在調用包含它的方法時執行。
要回答您要問的問題,字段初始化程序無法訪問 class 實例,因為它們在構造函數之前運行。
因此,您不能在字段初始化程序中使用來自您自己的 class 或基礎 class 的實例成員。
想象一下,理論上允許您提出的要求,那么需要回答的一個重要問題是:何時執行此代碼? 一種選擇是在構造函數運行之前或之后立即運行它。 但是,您可以將代碼放在構造函數中(無論是在開頭還是結尾),不是嗎? 為什么要讓構造函數代碼遍布 class? 除了使解析和閱讀代碼更加困難之外,您什么也得不到。
C#構造函數執行順序為:
然后從最衍生的 class 開始:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.