1

私は次の方法を持っています:

    public static ?? GetType6()
    {
        var name = "x";
        var age = 1;
        return ??
    }

このように呼び出されます:

    var ?? = GetType6();

そのメソッドを呼び出して、名前と年齢を取得できるようにしたいと考えています。匿名オブジェクトを作成することを考えましたが、それを行うとどうすればデコードできますか?

4

6 に答える 6

7

必要なものを保持する型を作成してみませんか?

public static MyType GetType6()
{
   MyType type = new MyType();
   type.name = "x";
   type.age = 1;
   return type;
}

class MyType
{
   public string name {get;set;}
   public int age {get;set;}

   public MyType()
   {
   }
}
于 2013-06-21T08:25:00.747 に答える
3

Tuple<string, int>最も簡単な方法は、 (.NET 4 以降で使用可能)を返すことです。

public static Tuple<string, int> GetType6()
{
    var name = "x";
    var age = 1;
    return Tuple.Create(name, age);
}

次の方法で値を読み取ることができます。

var pair = GetType6();
string name = pair.Item1;
int age = pair.Item2;

もちろん、より堅牢で読みやすく、保守しやすいのは、クラスを作成することです。

class User
{
    public string Name { get; set; }
    public int Age{ get; set; }
}

public static User GetUser()
{
    var name = "x";
    var age = 1;
    return new User{Name = name, Age = age };
}

var user  = GetUser();
string name = user.Name;
int age = user.Age;
于 2013-06-21T08:24:28.150 に答える
1

タプルを使用できます:

public Tuple<int, int> GetMultipleValue()
{
    return new Tuple<int,int>(1,2);
}

ここで詳細を確認できます: http://msdn.microsoft.com/en-us/library/system.tuple.aspx

于 2013-06-21T08:26:48.683 に答える
0

キーワードを使用outすると、次のように実行できます。

public static string GetType6(out int age)
{
   var name = "x";
   var age = 1;
   return name
}
  • このoutキーワードにより、引数が参照によって渡されます。
  • これは ref キーワードに似ていrefますが、変数を渡す前に初期化する必要がある点が異なります。
  • out パラメーターを使用するには、メソッド定義と呼び出し元のメソッドの両方で out キーワードを明示的に使用する必要があります。

注 : これを使用するのは悪い習慣です。

于 2013-06-21T08:24:11.937 に答える
0

dynamic戻り型として使用:

public static dynamic GetType6()
{
    var name = "x";
    var age = 1;
    return new { name = "x", age = 1 };
}

メソッド呼び出し:

var v =  GetType6();

SO の質問: C# のメソッドの変数の戻り値の型
MSDN: http://msdn.microsoft.com/en-us/library/vstudio/dd264741.aspx

于 2013-06-21T08:35:49.573 に答える
0

あなたが言ったように、匿名型を使用できます。このような。

public static object GetType6()
{
    return new { name = "x", age = 1 };
}

値を読み取るには、リフレクションを使用する必要があります。

var foo = GetType6();
var name = foo.GetType().GetProperty("name").GetValue(foo, null);
var age = foo.GetType().GetProperty("age").GetValue(foo, null);

必要なことを達成するのは非常に汚い方法ですが。

于 2013-06-21T08:41:50.407 に答える