0

申し訳ありませんが、以前は明確ではなかったと思います。ORmapper が以下に言うように、私はやろうとしています - 任意の変数のリストを作成し、後で foreach ループでそれらの値を取得します。

さらに、すべての変数は文字列型なので、1 つのリストに入れることができると思います。ありがとう。

変数をリストまたは配列に格納し、後でそれらをループする方法はありますか。

例: クラス c に x、y、Z という名前の 3 つの変数があります。

次のようなことができますか:

public List Max_One = 新しいリスト {cx,cy,cz}


そして、コードの後半で

          foreach (string var in Max_One)
          {                   
              if ((var < 0) | (var > 1 ))
              {
                // some code here
              }
          }
4

5 に答える 5

0

はい、たとえば、それらがすべてstringsである場合:

public List<string> Max_One = new List<string> {c.x,c.y,c.z};

これは、コレクション初期化構文を使用します。

stringただし、aをと比較することは意味がありませんint。これは有効な例です。

  foreach (string var in Max_One)
  {                   
      if (string.IsNullOrEmpty(var))
      {
        // some code here
      }
  }
于 2012-07-31T13:43:43.983 に答える
0

あなたは使用してみることができます:

List<object> list = new List<object>
{
  c.x,
  c.y,
  c.z  
};
于 2012-07-31T13:43:45.827 に答える
0

プロパティが数値(intたとえば)の場合、次のように実行できます。

List<int> Max_One = new List<int> { c.x, c.y, c.Z };

foreachそして、このようにあなたを使用してください

foreach(int myNum in Max_One) { ... } //you can't name an iterator 'var', it's a reserved word

intリスト宣言を正しい数値タイプ(doubledecimalなど)に置き換えます

于 2012-07-31T13:43:48.913 に答える
0

あなたの質問に逆に答えます

まず、予約名であるため、「var」で変数に名前を付けることはできません。したがって、 foreach に対してできることは

foreach (var x in Max_One)
      {                   
          if ((x< 0) || (x> 1 ))
          {
            // some code here
          }
      }

.Net 3.0 以降のフレームワークを使用している場合は、「var」を使用して x を Max_One リストのメンバーとして定義でき、x の実際のタイプを気にする必要はありません。バージョン 3.0 よりも古い場合は、x のデータ型を指定する必要があります。この場合、コードは有効です (それでもリスクはあります)。

最後のポイント (最初のポイント)

public List Max_One = new List {c.x,c.y,c.z}

知っておく必要がある主なことがあります。つまり、リストに格納するには、メンバーは同じデータ型である必要があるため、 a 、 b 、および c が同じデータ型でない限り、それらを同じリストに格納することはできません。データ型「オブジェクト」の要素を格納するリストを定義した場合。「オブジェクト」メソッドを使用した場合は、要素を次のような元の型にキャストする必要があります。

var x = (int) Max_One[0];

この Web サイト http://www.dotnetperls.com/collectionsから、リストやその他の代替手段について詳しく読むことができます。

Ps これが宿題である場合は、ビデオ チュートリアルや本からもっと多くのことを学んでください ;)

于 2012-07-31T14:07:16.087 に答える
0

変数のリストを事前に保存したい特別な理由はありますか? 必要なときにそのようなリストを再利用するだけで十分な場合は、次を返すプロパティを作成することを選択しIEnumerable<string>ます。

public IEnumerable<string> Max_One {
    get {
        yield return c.x;
        yield return c.y;
        yield return c.z;
    }
}

この列挙型で返される値は、プロパティ ゲッターが呼び出されたときにのみ取得されます。したがって、結果の列挙型には常に 、c.xc.yおよびの現在の値が含まれますc.z

foreach次に、質問で自分自身が示唆したように、ループを使用してこれらの値を反復処理できます。

変数のリストを徐々に組み立てる必要がある場合、これは実用的ではない可能性があります。その場合、リフレクションを使用する必要がある場合があります。これが本当に必要な場合はお知らせください。その例を示すことはできますが、より冗長で複雑になります。

于 2012-07-31T14:42:14.997 に答える