[英]What does the "base" syntax mean?
有人能告訴我下面的語法是什么意思嗎?
public ScopeCanvas(Context context, IAttributeSet attrs) : base(context, attrs)
{
}
我的意思是什么是method(argument) : base(argument) {}
?
PS這是一個類的構造函數。
:base<\/code>語法是派生類型鏈接到接受指定參數的基類上的構造函數的一種方式。
如果省略,編譯器將默默嘗試綁定到接受 0 個參數的基類構造函數。
class Parent {
protected Parent(int id) { }
}
class Child1 : Parent {
internal Child1() {
// Doesn't compile. Parent doesn't have a parameterless constructor and
// hence the implicit :base() won't work
}
}
class Child2 : Parent {
internal Child2() : base(42) {
// Works great
}
}
你的類可能是這樣定義的:
MyClass : BaseClass
它派生自其他類。 : base(...)
在運行派生類的構造函數中的代碼之前調用基類中的適當構造函數。
這是一個相關的問題。
編輯
正如Tilak所指出的,關於base關鍵字的 MSDN 文檔提供了很好的解釋。
它從傳遞參數context
和attrs
的基類調用構造函數
這是一個抽象的重載類構造函數,它允許初始化派生類和基類的參數,並指定是否要使用重載構造函數。 關聯
public class A
{
public A()
{ }
public A(int size)
{ }
};
class B : public A
{
public B()
{// this calls base class constructor A()
}
public B(int size) : base(size)
{ // this calls the overloaded constructor A(size)
}
}
您的類繼承自基類,並且當您初始化 ScopeCanvas 類型的對象時,使用 (context, attrs) 的參數列表調用基構造函數
這意味着此構造函數接受兩個參數,並將它們傳遞給繼承對象的構造函數。 下面的示例只有一個參數。
Public class BaseType
{
public BaseType(object something)
{
}
}
public class MyType : BaseType
{
public MyType(object context) : base(context)
{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.