簡體   English   中英

我如何捕捉CS7036錯誤

[英]How do i catch the CS7036 error

因此,我對C#相當陌生,而且我一直在學習如何將代碼從python轉換為C#。 現在,我偶然發現的問題是:如何捕獲CS7036錯誤。 它在python中稱為“ AttributeError”,如果嘗試實例化一個類而沒有必要的參數數量,則會發生這種情況。

public Vector Crossproduct(Vector other)
{
    try
    {
        List<double> output = new List<double>()
        {
            Y* other.Z - other.Y * Z,0 - (X * other.Z- other.X * Z),X* other.Y - other.X * Y
        };
        Vector outputvector = new Vector(output);
        return outputvector;
    }
    catch (Exception)
    {

        throw;
    }
}

我已經對此進行了Google搜索,發現該錯誤幾乎沒有。 這是Microsoft C#文檔的鏈接。 在這里這里。

我的問題不是如何解決該錯誤,而是如何捕獲該錯誤,我很清楚。

您在這里誤解了一些基本知識。 編譯器錯誤不是運行時異常。 他們是編譯器告訴你,代碼是不合法 沒有任何功能可以在運行時捕獲編譯器錯誤,因為非法代碼永遠不會首先運行。 這是非法的!

現在,在C#中有些情況下,在運行時會產生涉及dynamic的編譯器錯誤。 也就是說:C#有一個子系統,允許它與動態語言(例如Python或JavaScript)進行互操作。 使用該功能時,通常在編譯時做出的決定將推遲到運行時,在這種情況下,實際上您可能會遇到必須在運行時捕獲編譯器錯誤的情況。

您不在那種情況下,很少有涉及構造函數的動態情況。 如果將來遇到這種情況, RuntimeBinderException捕獲的異常是RuntimeBinderException

請參閱擁有動態變量如何影響性能? 如果您對此主題感興趣,請對dynamic原理進行一些思考。

C#是一種編譯語言,因此您不必“捕獲”這種錯誤,因為編譯器會為您捕獲它。 如果嘗試在沒有必需參數的情況下調用類構造函數,則代碼將根本無法編譯。

暫無
暫無

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

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