クラスをオプションのパラメータとしてメソッドに渡す方法は?

バイオヘル

私はこの辺りで同様の問題を探しましたが、私の問題の解決策を見つけることができませんでした。MyClassはいくつかのデータを保持し、異なる型間で型キャストを行います。

このエラーを回避するにはどうすればよいですか?

Program.MyClass型への標準的な変換がないため、「string」型の値をデフォルトパラメータとして使用することはできません。

Funcを試し、複数の引数を渡してデフォルトのパラメーターを処理できるように複数の関数のオーバーロードを宣言しました。これを達成するためのより良い方法があるはずです。うまくいけば、あなたが助けることができます。

私の問題を明確にするために、私はこのコードを作成しました:

using System;

public class Program
{
    public class MyClass {
            public string Value { get; set; } 
            public MyClass()
            {
                Value = "";
            }
            public MyClass(string s)
            {
                Value = s;
            }
            public override string ToString()
            {
                return this.Value;
            }
    }

    // Causes CS1750
    // A value of type 'string' cannot be used as default parameter
    // because there are no standard conversions to type 'Program.MyClass'
    public static string test2(string a, MyClass b = " with default text")
    {
       return a + b;
    }

    public static string test(string a, string b = " with default text")
    {
       return a + b;
    }

    public static void Main()
    {
        Console.WriteLine(test("test1"));
        Console.WriteLine(test("test1", " with my text"));
    }
}
mdarefull

それは完全には不可能です。エラーメッセージに記載されているように、標準の変換が必要です:https//docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/conversions#standard-conversions

私たちにできることは、クラスの暗黙的な変換演算子を定義することだけです:https//docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/user-defined-conversion-operators

あなたの場合、それは次のようになります。

public static implicit operator MyClass(string val) => new MyClass(val);

そして、テストメソッドを次のようなものに置き換えます。

public static string test(string a, MyClass b = null)
{
    b = b ?? " with default text";
    return a + b;
}

また、引数が1つしかない場合は、両方のテストメソッドの署名が同じであるため、コンパイラはどちらを使用するかわからないため、2番目のテストメソッドのデフォルト値を削除してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オプションのパラメータをメソッドに渡す

分類Dev

プロトコル内のオプションのメソッドでパラメーターとして列挙型を渡す方法

分類Dev

メソッドを呼び出すときにオプションの引数としてディクショナリパラメータを使用する

分類Dev

オプションに基づいて異なるメソッドを返すクラスのパターン?

分類Dev

Ember-選択したオプション値をパラメーターとしてアクションハンドラーに渡す方法

分類Dev

ジェネリックのメソッドでパラメータとしてコレクションクラスを渡すことができません

分類Dev

Pythonのメソッドにパラメーターとしてシグナルを渡す方法は?

分類Dev

クラスのメソッドをパラメーターとしてC ++の別のクラスに渡す

分類Dev

Google Mockでオプションのパラメータを使用してメソッドをモックする方法は?

分類Dev

Spring MVCでセッション属性をメソッド引数(パラメーター)として渡す方法

分類Dev

剣道データソースの読み取りメソッドで配列オブジェクトをパラメーターとして渡す方法は?

分類Dev

子クラスの関数名をパラメーターとしてPythonの親クラスメソッドに渡す方法は?

分類Dev

teeオプションを使用してffmpegのビットストリームフィルターにパラメーターを渡す方法は?

分類Dev

リフレクションを使用してサブクラスタイプをJavaGenericメソッドに渡すと、例外はスローされません

分類Dev

C ++でテンプレートクラスにパラメータとして渡される基本クラスのメソッドをオーバーロードするにはどうすればよいですか?

分類Dev

メソッドWITHパラメーターを新しいアクションとして渡す方法はありますか?

分類Dev

0がオプションのパラメータとしてクラスのメソッドに渡されました。パラメータが見つかりません

分類Dev

oozieのパラメータとしてpigオプションを渡す方法は?

分類Dev

オブジェクトをパラメータとしてハンドルバーテンプレートのonclickメソッドに渡します

分類Dev

コンテキストをメソッドパラメーターとしてコンストラクターに渡すのは誰か

分類Dev

抽象メソッドをオーバーライドするパラメータとしてサブクラスを渡す方法は?

分類Dev

オプションパラメータのメソッド引数としてGuavaオプション

分類Dev

クラスをパラメーターとそのメソッドとして動的に渡す-php

分類Dev

タイプのオブジェクトをパラメーターとしてWebApi Get / Postメソッドに渡す方法

分類Dev

メソッドをパラメーターとしてメソッドに渡す方法はありますか?

分類Dev

メソッドのパラメーターとしてクラスを渡し、Ifステートメントでこのパラメーターを使用する

分類Dev

他のいくつかのオプションパラメータを省略してオプションパラメータを渡す方法は?

分類Dev

JSFパラメータの値をメソッドパラメータとして渡す方法は?

分類Dev

オブジェクト名と値のペアをパラメーターとしてメソッドに渡す方法は?

Related 関連記事

  1. 1

    オプションのパラメータをメソッドに渡す

  2. 2

    プロトコル内のオプションのメソッドでパラメーターとして列挙型を渡す方法

  3. 3

    メソッドを呼び出すときにオプションの引数としてディクショナリパラメータを使用する

  4. 4

    オプションに基づいて異なるメソッドを返すクラスのパターン?

  5. 5

    Ember-選択したオプション値をパラメーターとしてアクションハンドラーに渡す方法

  6. 6

    ジェネリックのメソッドでパラメータとしてコレクションクラスを渡すことができません

  7. 7

    Pythonのメソッドにパラメーターとしてシグナルを渡す方法は?

  8. 8

    クラスのメソッドをパラメーターとしてC ++の別のクラスに渡す

  9. 9

    Google Mockでオプションのパラメータを使用してメソッドをモックする方法は?

  10. 10

    Spring MVCでセッション属性をメソッド引数(パラメーター)として渡す方法

  11. 11

    剣道データソースの読み取りメソッドで配列オブジェクトをパラメーターとして渡す方法は?

  12. 12

    子クラスの関数名をパラメーターとしてPythonの親クラスメソッドに渡す方法は?

  13. 13

    teeオプションを使用してffmpegのビットストリームフィルターにパラメーターを渡す方法は?

  14. 14

    リフレクションを使用してサブクラスタイプをJavaGenericメソッドに渡すと、例外はスローされません

  15. 15

    C ++でテンプレートクラスにパラメータとして渡される基本クラスのメソッドをオーバーロードするにはどうすればよいですか?

  16. 16

    メソッドWITHパラメーターを新しいアクションとして渡す方法はありますか?

  17. 17

    0がオプションのパラメータとしてクラスのメソッドに渡されました。パラメータが見つかりません

  18. 18

    oozieのパラメータとしてpigオプションを渡す方法は?

  19. 19

    オブジェクトをパラメータとしてハンドルバーテンプレートのonclickメソッドに渡します

  20. 20

    コンテキストをメソッドパラメーターとしてコンストラクターに渡すのは誰か

  21. 21

    抽象メソッドをオーバーライドするパラメータとしてサブクラスを渡す方法は?

  22. 22

    オプションパラメータのメソッド引数としてGuavaオプション

  23. 23

    クラスをパラメーターとそのメソッドとして動的に渡す-php

  24. 24

    タイプのオブジェクトをパラメーターとしてWebApi Get / Postメソッドに渡す方法

  25. 25

    メソッドをパラメーターとしてメソッドに渡す方法はありますか?

  26. 26

    メソッドのパラメーターとしてクラスを渡し、Ifステートメントでこのパラメーターを使用する

  27. 27

    他のいくつかのオプションパラメータを省略してオプションパラメータを渡す方法は?

  28. 28

    JSFパラメータの値をメソッドパラメータとして渡す方法は?

  29. 29

    オブジェクト名と値のペアをパラメーターとしてメソッドに渡す方法は?

ホットタグ

アーカイブ