簡體   English   中英

C#構造

[英]C# construction

我嘗試理解一個Unity示例腳本,並在示例中找到以下代碼:

 protected IEnumerator SmoothMovement(Vector3 end) {
    float sqrRemainingDistance = (transform.position - end).sqrMagnitude;

    while (sqrRemainingDistance > float.Epsilon) {
        Vector3 newPosition = Vector3.MoveTowards(rb2d.position, end, inverseMoveTime * Time.deltaTime);
        rb2d.MovePosition(newPosition);
        sqrRemainingDistance = (transform.position - end).sqrMagnitude;
        yield return null;
    }
}

public abstract void OnCantMove <T> (T component)
    where T : Component;

我真的不明白最后兩行。 他們是什么意思,他們在做什么?

它是一個通用參數,帶有約束條件,表示傳遞給它的任何對象都必須是Component類型的

類型參數的約束

那些拖曳線定義了一個抽象方法,該方法不返回任何值,並且期望任何Component 任何實現抽象類的類也應實現此抽象方法。

這只是一個方法簽名。 細目如下:

public abstract

一個公共方法,必須在派生類中重寫

void

沒有返回值

OnCantMove

方法名為OnCantMove

<T>(T component)

它需要一個類型參數T和一個正在調用component的類型T的實例。 通常,當您調用此方法來自行確定類型參數時,如果編譯器使用該類型的實例參數,則該編譯器足夠聰明。 因此潛在地,您可以將其稱為<T>參數。

where T : Component

類型參數T被約束為Component類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM