C#開発における.NETバージョンのダウングレードの問題解決に関するメモ

.NET バージョンのダウングレードに関する C# 開発問題の記録

以下は、.NET4.7.2 バージョンを使用してコントロールを開発し、その後 .NET4.5 を使用するようにコントロール コードをダウングレードしたときに遭遇した問題と解決策です。

  1. 構造体コンストラクター: 「制御を呼び出し元に返す前に、フィールドを完全に割り当てる必要があります。」

元のコードとエラーは次のとおりです。

ここに画像の説明を挿入します

自動プロパティを持つ構造体でこのエラーが発生した場合は、次の手順を実行して、パラメーター化された構造体からパラメーターなしのコンストラクターを呼び出します。 this() 例:

public struct MyPoint
    {
        public decimal X { get; set; }

        public decimal Y { get; set; }

        public MyPoint(decimal x, decimal y) : this()
        {
            X = x;
            Y = y;
        }

    }

コンストラクター宣言から this() を呼び出すことで、ValueType 基本クラスに自動プロパティのすべてのバッキング フィールドを初期化させることができます。自動プロパティのバッキングフィールドにアクセスできないため、コンストラクターでこれを手動で行うことはできません。
ValueType はすべての構造体の基本クラスです。

このようにして問題は解決できます。

ここに画像の説明を挿入します

2. 代入問題
	public string displayText { get; set; } = "电力曲线图";

    public string sidebarText { get; set; } = "EVADA";

上記のコードのような変数への値の代入は、以前のバージョンではサポートされていないため、コンストラクターで値を代入するようにすべて変更します。

.NET Framework 4.5 では、プロパティ初期化子 (プロパティ初期化子) の使用はサポートされていないため、これらのプロパティはコンストラクターで初期化する必要があります。

例えば:

// 构造函数
    public 你的构造方法()
    {
        displayText = "电力曲线图";

        sidebarText = "EVADA";
    }
3. 戻り値問題の構文 ( get => value;)
get => curveEntity._dataSource;

上記コードはC# .NET4.7.2版でのコードですが、.NET 4.5版では[get =>curveEntity._dataSource;]はコンパイルできません。

.NET Framework バージョン 4.5 では、get => value;C# 6.0 で導入された簡素化されたプロパティ (式本体のプロパティ) 構文 ( ) の使用はサポートされていません。従来のget構文が必要です。以下は、.NET Framework 4.5 と互換性のあるコードです。

get { return curveEntity._dataSource; }
4. 条件付きメンバーアクセス式(null条件演算子?.)
if (data?.Count > 1)

上記コードはC# .NET4.7.2版でのコードですが、[if (data?.Count > 1)]は.NET 4.5版ではコンパイルできません。

.NET Framework 4.5 では、条件付きメンバー アクセス式 (null 条件演算子?.) はサポートされていません。代わりに、従来の条件付き判断ステートメントを使用できます。以下は、.NET Framework 4.5 と互換性のあるコードです。

if (data != null && data.Count > 1)

もう一つの例:

DataRefreshed?.Invoke(this, EventArgs.Empty);

着替える:

if (DataRefreshed != null)
{
    DataRefreshed(this, EventArgs.Empty);
}

私は将軍です、いつもそこにいます。

おすすめ

転載: blog.csdn.net/letterljhx/article/details/133342252