ホーム>source

クラスではないC#の参照型はありますか?次のジェネリックの制約はすべての参照タイプを含みますか?

<前>ウィズウィズ static void f<T>() where T : class { T t = default; Console.WriteLine(t); }
あなたの答え
  • 解決した方法 # 1

    2つの異なる質問をしている

    ウィズウィズ

    番号

    ウィズウィズ ウィズウィズ ]、すべての参照を含みます   タイプ?

    はい、それはすべてを制約します参照タイプ


    第一に、何を決定しましょう参照タイプ 実際にです。

    参照型(C#リファレンス)

    ウィズウィズ

    <サブ>注意 :上記に記載されていない、

    Are all reference types class types in C#?

     型も

    does the constraint in following generic [ から派生した参照型です  基本タイプ where T : class

    第二に、何を解決しましょうクラス制約 拘束する

    型パラメーターの制約(C#プログラミングガイド)

    ウィズウィズ ウィズウィズ

         

    型引数は参照型でなければなりません。この制約が適用されます   またにクラスインターフェース委任する、または配列型

    <サブ>注意 :上で言及されていない、

    There are two kinds of types in C#:reference typesandvalue types. Variables of reference types store references to their data (objects), while variables of value types directly contain their data.

    The following keywords are used to declare reference types:

      class

      interface

      delegate

    C# also provides the following built-in reference types:

      dynamic

      object

      string

     制約には Array も含まれます


    ボーナス事実として、以来C#7.3 また、明示的に制約することもできます委任する 

    制約の委任

    ウィズウィズ ウィズウィズ  または   ウィズウィズ  基本クラスの制約として。 CLRは常に   この制約は許可されましたが、C#言語はそれを許可しませんでした

    abstract

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ c# - SharpCifsおよびデコードが機能しないNASからイメージをロードする