おそらくこれは本当に単純なものでしょう-私はC#から始めて、配列に値を追加する必要があります。例えば:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
PHPを使用したことがある人のために、私がC#でやろうとしていることは次のとおりです。
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
おそらくこれは本当に単純なものでしょう-私はC#から始めて、配列に値を追加する必要があります。例えば:
int[] terms;
for(int runs = 0; runs < 400; runs++)
{
terms[] = runs;
}
PHPを使用したことがある人のために、私がC#でやろうとしていることは次のとおりです。
$arr = array();
for ($i = 0; $i < 10; $i++) {
$arr[] = $i;
}
回答:
あなたはこのようにすることができます-
int[] terms = new int[400];
for (int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
または、リストを使用することもできます。リストの利点は、リストをインスタンス化するときに配列のサイズを知る必要がないことです。
List<int> termsList = new List<int>();
for (int runs = 0; runs < 400; runs++)
{
termsList.Add(value);
}
// You can convert it back to an array if you would like to
int[] terms = termsList.ToArray();
new int[]{}
!!!!!
OutOfRangeException
、コードを実行するとすぐにが取得されます。配列は使用するサイズで初期化する必要があります。配列は最初にすべてのスペースを予約します。魔女はそれらを非常に高速にしますが、サイズを変更することはできません。
C#3で記述している場合は、ワンライナーでこれを行うことができます。
int[] terms = Enumerable.Range(0, 400).ToArray();
このコードスニペットは、ファイルの先頭にSystem.Linqのusingディレクティブがあることを前提としています。
一方、PHPの場合のように、動的にサイズ変更できるものを探している場合(実際には学習していません)、int []の代わりにListを使用することをお勧めします。 。ここで何がそのコードは次のようになります。
List<int> terms = Enumerable.Range(0, 400).ToList();
ただし、terms [400]に値を設定するだけでは、401番目の要素を追加することはできません。代わりに、次のようにAdd()を呼び出す必要があります。
terms.Add(1337);
LinqのメソッドConcatを使用すると、これが簡単になります
int[] array = new int[] { 3, 4 };
array = array.Concat(new int[] { 2 }).ToArray();
結果3、4、2
配列を使用してそれを行う方法についての回答はここにあります。
ただし、C#にはSystem.Collectionsと呼ばれる非常に便利なものがあります。
コレクションの多くは内部で配列を使用しますが、コレクションは配列を使用するための優れた代替手段です。
たとえば、C#には、PHP配列とよく似た機能を持つListというコレクションがあります。
using System.Collections.Generic;
// Create a List, and it can only contain integers.
List<int> list = new List<int>();
for (int i = 0; i < 400; i++)
{
list.Add(i);
}
他の人が説明したように、中間としてリストを使用するのが最も簡単な方法ですが、入力は配列であり、データをリストに保持したくないだけなので、パフォーマンスに懸念があると思います。
最も効率的な方法は、新しい配列を割り当ててから、Array.CopyまたはArray.CopyToを使用することです。リストの最後にアイテムを追加するだけの場合、これは難しくありません。
public static T[] Add<T>(this T[] target, T item)
{
if (target == null)
{
//TODO: Return null or throw ArgumentNullException;
}
T[] result = new T[target.Length + 1];
target.CopyTo(result, 0);
result[target.Length] = item;
return result;
}
必要に応じて、宛先インデックスを入力として受け取るInsert拡張メソッドのコードを投稿することもできます。これはもう少し複雑で、静的メソッドArray.Copyを1〜2回使用します。
Thracxの回答に基づいて(答えるのに十分なポイントがありません):
public static T[] Add<T>(this T[] target, params T[] items)
{
// Validate the parameters
if (target == null) {
target = new T[] { };
}
if (items== null) {
items = new T[] { };
}
// Join the arrays
T[] result = new T[target.Length + items.Length];
target.CopyTo(result, 0);
items.CopyTo(result, target.Length);
return result;
}
これにより、複数の項目を配列に追加したり、配列をパラメーターとして渡して2つの配列を結合したりできます。
C#配列は固定長で、常にインデックスが付けられます。Mottiのソリューションを使用します。
int [] terms = new int[400];
for(int runs = 0; runs < 400; runs++)
{
terms[runs] = value;
}
この配列は、密集した配列であり、400バイトの連続したブロックであり、ここで削除できます。動的なサイズの配列が必要な場合は、List <int>を使用します。
List<int> terms = new List<int>();
for(int runs = 0; runs < 400; runs ++)
{
terms.Add(runs);
}
int []もList <int>も連想配列ではなく、C#ではDictionary <>になります。配列とリストの両方が密集しています。
int[] terms = new int[10]; //create 10 empty index in array terms
//fill value = 400 for every index (run) in the array
//terms.Length is the total length of the array, it is equal to 10 in this case
for (int run = 0; run < terms.Length; run++)
{
terms[run] = 400;
}
//print value from each of the index
for (int run = 0; run < terms.Length; run++)
{
Console.WriteLine("Value in index {0}:\t{1}",run, terms[run]);
}
Console.ReadLine();
/*出力:
400:インデックス0の値
400:インデックス1の値
400:インデックス2の値
400:インデックス3の値
400:インデックス4の値
400:指標5の値
400:指標6の値
400:インデックス7における値
の値でインデックス8:400
インデックス9の値:400
* /
配列のサイズがわからない場合、または追加する既存の配列がすでにある場合。これには2つの方法で対処できます。1つ目はジェネリックを使用する方法です。List<T>
これを行うには、配列をaに変換しvar termsList = terms.ToList();
、Addメソッドを使用します。次に、このvar terms = termsList.ToArray();
メソッドを使用して、配列に変換して戻します。
var terms = default(int[]);
var termsList = terms == null ? new List<int>() : terms.ToList();
for(var i = 0; i < 400; i++)
termsList.Add(i);
terms = termsList.ToArray();
2番目の方法は、現在の配列のサイズを変更することです。
var terms = default(int[]);
for(var i = 0; i < 400; i++)
{
if(terms == null)
terms = new int[1];
else
Array.Resize<int>(ref terms, terms.Length + 1);
terms[terms.Length - 1] = i;
}
.NET 3.5を使用している場合 Array.Add(...);
これらはどちらも動的に行うことができます。たくさんのアイテムを追加する場合は、を使用してくださいList<T>
。数個のアイテムの場合は、配列のサイズ変更のパフォーマンスが向上します。これは、List<T>
オブジェクトを作成するためにより多くのヒットを取得するためです。
タイムズ ティック:
3アイテム
配列サイズ変更時間:6
リスト追加時間:16
400アイテム
配列のサイズ変更時間:305
リスト追加時間:20
ちょうど異なるアプローチ:
int runs = 0;
bool batting = true;
string scorecard;
while (batting = runs < 400)
scorecard += "!" + runs++;
return scorecard.Split("!");
=
比較演算子の代わりに代入演算子を使用するつもりでしたか?バトル変数を省略してruns < 400
、ループの制御に使用できます。
1つのアプローチは、LINQを介して配列を埋めることです
配列に1つの要素を入力する場合は、次のように簡単に記述できます
string[] arrayToBeFilled;
arrayToBeFilled= arrayToBeFilled.Append("str").ToArray();
さらに、配列に複数の要素を入れたい場合は、前のコードをループで使用できます
//the array you want to fill values in
string[] arrayToBeFilled;
//list of values that you want to fill inside an array
List<string> listToFill = new List<string> { "a1", "a2", "a3" };
//looping through list to start filling the array
foreach (string str in listToFill){
// here are the LINQ extensions
arrayToBeFilled= arrayToBeFilled.Append(str).ToArray();
}
static void Main(string[] args)
{
int[] arrayname = new int[5];/*arrayname is an array of 5 integer [5] mean in array [0],[1],[2],[3],[4],[5] because array starts with zero*/
int i, j;
/*initialize elements of array arrayname*/
for (i = 0; i < 5; i++)
{
arrayname[i] = i + 100;
}
/*output each array element value*/
for (j = 0; j < 5; j++)
{
Console.WriteLine("Element and output value [{0}]={1}",j,arrayname[j]);
}
Console.ReadKey();/*Obtains the next character or function key pressed by the user.
The pressed key is displayed in the console window.*/
}
/*arrayname is an array of 5 integer*/
int[] arrayname = new int[5];
int i, j;
/*initialize elements of array arrayname*/
for (i = 0; i < 5; i++)
{
arrayname[i] = i + 100;
}
ToArray()メソッドを使用せずにC#を使用して文字列配列にリスト値を追加するには
List<string> list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
list.Add("four");
list.Add("five");
string[] values = new string[list.Count];//assigning the count for array
for(int i=0;i<list.Count;i++)
{
values[i] = list[i].ToString();
}
値配列の出力には以下が含まれます。
1
二
三
四
五