foreachループの現在の反復のインデックスをどのように取得しますか?

996
Matt Mitchell 2008-09-04 15:38.

foreachループの現在の反復を表す値を取得するために、C#で遭遇したことのないまれな言語構造(最近学んだいくつかのように、スタックオーバーフローに関するものもあります)はありますか?

たとえば、私は現在、状況に応じて次のようなことをしています。

int i = 0;
foreach (Object o in collection)
{
    // ...
    i++;
}

30 answers

580
FlySwat 2008-09-04 15:46.

foreach実装のコレクションを反復処理するためにありますIEnumerable。これはGetEnumerator、コレクションを呼び出すことによって行われEnumeratorます。コレクションは。を返します。

この列挙子には、メソッドとプロパティがあります。

  • MoveNext()
  • Current

CurrentEnumeratorが現在存在しているオブジェクトを返し、次のオブジェクトにMoveNext更新Currentします。

インデックスの概念は列挙の概念とは異質であり、実行することはできません。

そのため、ほとんどのコレクションは、インデクサーとforループ構造を使用してトラバースできます。

この状況では、ローカル変数を使用してインデックスを追跡するよりも、forループを使用する方が非常に好きです。

720
bcahill 2012-07-12 06:52.

Ian Mercerは、PhilHaackのブログにこれと同様の解決策を投稿しました。

foreach (var item in Model.Select((value, i) => new { i, value }))
{
    var value = item.value;
    var index = item.i;
}

これにより、このLINQのオーバーロードを使用して、アイテム(item.value)とそのインデックス(item.i)を取得できます。Select

関数の2番目のパラメーター[Select内]は、ソース要素のインデックスを表します。

new { i, value }新しい作成された匿名オブジェクトを。

ValueTupleC#7.0以降を使用している場合は、を使用することでヒープ割り当てを回避できます。

foreach (var item in Model.Select((value, i) => ( value, i )))
{
    var value = item.value;
    var index = item.i;
}

item.自動デストラクチャリングを使用して、を削除することもできます。

<ol>
foreach ((MyType value, Int32 i) in Model.Select((value, i) => ( value, i )))
{
    <li id="[email protected]">@value</li>
}
</ol>
237
user1414213562 2016-10-13 01:12.

最後に、C#7には、foreachループ内のインデックス(つまりタプル)を取得するための適切な構文があります。

foreach (var (item, index) in collection.WithIndex())
{
    Debug.WriteLine($"{index}: {item}");
}

少し拡張方法が必要になります:

public static IEnumerable<(T item, int index)> WithIndex<T>(this IEnumerable<T> self)       
   => self.Select((item, index) => (item, index)); 
121
Brad Wilson 2008-09-04 15:49.

このようなことをすることができます:

public static class ForEachExtensions
{
    public static void ForEachWithIndex<T>(this IEnumerable<T> enumerable, Action<T, int> handler)
    {
        int idx = 0;
        foreach (T item in enumerable)
            handler(item, idx++);
    }
}

public class Example
{
    public static void Main()
    {
        string[] values = new[] { "foo", "bar", "baz" };

        values.ForEachWithIndex((item, idx) => Console.WriteLine("{0}: {1}", idx, item));
    }
}
99
mike nelson 2009-06-26 13:49.

forほとんどの場合、ループがより良い選択であるというコメントには同意しません。

foreachは便利な構成でありfor、すべての状況でループに置き換えることはできません。

たとえば、DataReaderがあり、foreachそれを使用してすべてのレコードをループする場合、Disposeメソッドが自動的に呼び出され、リーダーが閉じられます(これにより、接続が自動的に閉じられます)。したがって、リーダーを閉じるのを忘れた場合でも接続リークを防ぐため、これはより安全です。

(確かに、常にリーダーを閉じることは良い習慣ですが、そうしないとコンパイラーはそれをキャッチしません-すべてのリーダーを閉じたことを保証することはできませんが、取得することで接続がリークしない可能性を高めることができますforeachを使用する習慣があります。)

Disposeメソッドの暗黙的な呼び出しが役立つ他の例があるかもしれません。

67
Amy B 2008-09-17 11:50.

リテラル回答-警告、パフォーマンスはint、インデックスを追跡するためにを使用するほど良くない場合があります。少なくとも、を使用するよりはましですIndexOf

Selectのインデックス作成オーバーロードを使用して、コレクション内の各アイテムを、インデックスを認識している匿名オブジェクトでラップする必要があります。これは、IEnumerableを実装するすべてのものに対して実行できます。

System.Collections.IEnumerable collection = Enumerable.Range(100, 10);

foreach (var o in collection.OfType<object>().Select((x, i) => new {x, i}))
{
    Console.WriteLine("{0} {1}", o.i, o.x);
}
43
Pavel 2017-09-11 10:56.

LINQ、C#7、およびSystem.ValueTupleNuGetパッケージを使用すると、次のことができます。

foreach (var (value, index) in collection.Select((v, i)=>(v, i))) {
    Console.WriteLine(value + " is at index " + index);
}

通常のforeach構成を使用して、オブジェクトのメンバーとしてではなく、値とインデックスに直接アクセスでき、両方のフィールドをループのスコープ内にのみ保持できます。これらの理由から、C#7およびを使用できる場合はこれが最善の解決策であると思いますSystem.ValueTuple

35
Gezim 2013-10-08 12:49.

@FlySwatの答えを使用して、私はこの解決策を思いつきました:

//var list = new List<int> { 1, 2, 3, 4, 5, 6 }; // Your sample collection

var listEnumerator = list.GetEnumerator(); // Get enumerator

for (var i = 0; listEnumerator.MoveNext() == true; i++)
{
  int currentItem = listEnumerator.Current; // Get current item.
  //Console.WriteLine("At index {0}, item is {1}", i, currentItem); // Do as you wish with i and  currentItem
}

を使用GetEnumeratorして列挙子を取得し、ループを使用してforループします。ただし、秘訣はループの条件を作成することlistEnumerator.MoveNext() == trueです。

MoveNext列挙子のメソッドは、次の要素があり、それにアクセスできる場合にtrueを返すため、ループ条件を作成すると、反復する要素がなくなったときにループが停止します。

34
David Bullock 2014-02-26 04:07.

カウンター変数を使用しても問題はありません。実際には、あなたが使用するかどうかforforeach whileあるいはdo、カウンタ変数は、どこかで宣言され、インクリメントされなければなりません。

したがって、適切にインデックス付けされたコレクションがあるかどうかわからない場合は、このイディオムを使用してください。

var i = 0;
foreach (var e in collection) {
   // Do stuff with 'e' and 'i'
   i++;
}

それ以外の場合、インデックス可能なコレクションがインデックスアクセス用のO(1)であることがわかっている場合は、これを使用します(これは、おそらく(ドキュメントには記載されていません)用ですが、必ずしも他のタイプ(など)用ではありません):ArrayList<T>LinkedList

// Hope the JIT compiler optimises read of the 'Count' property!
for (var i = 0; i < collection.Count; i++) {
   var e = collection[i];
   // Do stuff with 'e' and 'i'
}

「手動」に動作することが必要になることはありませんIEnumerator呼び出すことにより、MoveNext()および尋問Current-foreach特には気にすることを...あなたがアイテムをスキップする必要がある場合は、ちょうど使用あなたを保存しているcontinueループのボディに。

また、完全を期すために、インデックスで何をしていたかに応じて(上記の構成は十分な柔軟性を提供します)、ParallelLINQを使用できます。

// First, filter 'e' based on 'i',
// then apply an action to remaining 'e'
collection
    .AsParallel()
    .Where((e,i) => /* filter with e,i */)
    .ForAll(e => { /* use e, but don't modify it */ });

// Using 'e' and 'i', produce a new collection,
// where each element incorporates 'i'
collection
    .AsParallel()
    .Select((e, i) => new MyWrapper(e, i));

AsParallel()すでに2014年であるため、上記を使用します。これらの複数のコアを有効に活用して、処理を高速化します。さらに、「シーケンシャル」LINQの場合、ForEach()拡張メソッドはList<T>Array...でのみ取得できます。これを使用する方が、単純なを実行するよりも優れているかforeachどうかは明らかではありません。

26
Brian Gideon 2010-07-21 09:15.

元の列挙子を、インデックス情報を含む別の列挙子でラップすることができます。

foreach (var item in ForEachHelper.WithIndex(collection))
{
    Console.Write("Index=" + item.Index);
    Console.Write(";Value= " + item.Value);
    Console.Write(";IsLast=" + item.IsLast);
    Console.WriteLine();
}

これがForEachHelperクラスのコードです。

public static class ForEachHelper
{
    public sealed class Item<T>
    {
        public int Index { get; set; }
        public T Value { get; set; }
        public bool IsLast { get; set; }
    }

    public static IEnumerable<Item<T>> WithIndex<T>(IEnumerable<T> enumerable)
    {
        Item<T> item = null;
        foreach (T value in enumerable)
        {
            Item<T> next = new Item<T>();
            next.Index = 0;
            next.Value = value;
            next.IsLast = false;
            if (item != null)
            {
                next.Index = item.Index + 1;
                yield return item;
            }
            item = next;
        }
        if (item != null)
        {
            item.IsLast = true;
            yield return item;
        }            
    }
}
21
mat3 2009-12-31 19:26.

これが私がこの問題のために思いついた解決策です

元のコード:

int index=0;
foreach (var item in enumerable)
{
    blah(item, index); // some code that depends on the index
    index++;
}

更新されたコード

enumerable.ForEach((item, index) => blah(item, index));

拡張方法:

    public static IEnumerable<T> ForEach<T>(this IEnumerable<T> enumerable, Action<T, int> action)
    {
        var unit = new Unit(); // unit is a new type from the reactive framework (http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx) to represent a void, since in C# you can't return a void
        enumerable.Select((item, i) => 
            {
                action(item, i);
                return unit;
            }).ToList();

        return pSource;
    }
18
Parsa 2016-05-27 11:41.

なぜforeach ?!

Listを使用している場合最も簡単な方法はforeachの代わりにforを使用することです

for (int i = 0 ; i < myList.Count ; i++)
{
    // Do something...
}

または、foreachを使用する場合:

foreach (string m in myList)
{
     // Do something...
}

これを使用して、各ループのインデックスを知ることができます。

myList.indexOf(m)
17
conterio 2018-05-22 10:55.

独自のインデックスを追加するだけです。単純にする。

int i = 0;
foreach (var item in Collection)
{
    item.index = i;
    ++i;
}
15
crucible 2008-09-04 16:39.

これはリストに対してのみ機能し、IEnumerableに対しては機能しませんが、LINQには次のようなものがあります。

IList<Object> collection = new List<Object> { 
    new Object(), 
    new Object(), 
    new Object(), 
    };

foreach (Object o in collection)
{
    Console.WriteLine(collection.IndexOf(o));
}

Console.ReadLine();

@ジョナサン私はそれが素晴らしい答えだとは言いませんでした、私はそれが彼が尋ねたことをすることが可能であることを示しているだけだと言いました:)

@Graphain高速になるとは思いませんが、どのように機能するかは完全にはわかりません。リスト全体を繰り返すたびに、一致するオブジェクトが見つかる可能性があります。これは、比較の大騒ぎになります。

そうは言っても、Listはカウントとともに各オブジェクトのインデックスを保持する場合があります。

ジョナサンは、彼が詳しく説明するなら、より良い考えを持っているようです?

ただし、Foreachのどこまで進んでいるかを数えるだけで、よりシンプルで、より適応性の高いものにすることをお勧めします。

14
Paul Mitchell 2017-07-22 03:52.

C#7は、ついにこれを行うためのエレガントな方法を提供します。

static class Extensions
{
    public static IEnumerable<(int, T)> Enumerate<T>(
        this IEnumerable<T> input,
        int start = 0
    )
    {
        int i = start;
        foreach (var t in input)
        {
            yield return (i++, t);
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        var s = new string[]
        {
            "Alpha",
            "Bravo",
            "Charlie",
            "Delta"
        };

        foreach (var (i, t) in s.Enumerate())
        {
            Console.WriteLine($"{i}: {t}");
        }
    }
}
10
Sachin 2010-01-01 01:49.
int index;
foreach (Object o in collection)
{
    index = collection.indexOf(o);
}

これは、をサポートするコレクションで機能しIListます。

9
Ian Henry 2010-08-21 12:45.

これは私がそれを行う方法であり、その単純さ/簡潔さのために素晴らしいです、しかしあなたがループ本体obj.Valueでたくさんしているなら、それはかなり速く古くなるでしょう。

foreach(var obj in collection.Select((item, index) => new { Index = index, Value = item }) {
    string foo = string.Format("Something[{0}] = {1}", obj.Index, obj.Value);
    ...
}
8
Todd 2016-11-11 18:11.

この回答:C#言語チームに直接言語サポートを働きかけます。

主要な回答は次のように述べています。

明らかに、インデックスの概念は列挙の概念とは異質であり、実行することはできません。

これは現在のC#言語バージョン(2020)にも当てはまりますが、これは概念的なCLR /言語の制限ではなく、実行できます。

Microsoft C#言語開発チームは、新しいインターフェイスIIndexedEnumerableのサポートを追加することにより、新しいC#言語機能を作成できます。

foreach (var item in collection with var index)
{
    Console.WriteLine("Iteration {0} has value {1}", index, item);
}

//or, building on @user1414213562's answer
foreach (var (item, index) in collection)
{
    Console.WriteLine("Iteration {0} has value {1}", index, item);
}

場合はforeach ()使用され、with var index存在する場合、コンパイラは、宣言にアイテムのコレクションを期待IIndexedEnumerableインターフェース。インターフェイスがない場合、コンパイラはソースをIndexedEnumerableオブジェクトでポリフィルラップできます。これにより、インデックスを追跡するためのコードが追加されます。

interface IIndexedEnumerable<T> : IEnumerable<T>
{
    //Not index, because sometimes source IEnumerables are transient
    public long IterationNumber { get; }
}

後で、CLRを更新して内部インデックス追跡を行うことができます。これは、withキーワードが指定され、ソースが直接実装されていない場合にのみ使用されます。IIndexedEnumerable

なぜ:

  • Foreachは見栄えが良く、ビジネスアプリケーションでは、foreachループがパフォーマンスのボトルネックになることはめったにありません。
  • Foreachは、メモリ上でより効率的になります。各ステップで新しいコレクションに変換する代わりに、関数のパイプラインを持つ。CPUキャッシュ障害が少なく、ガベージコレクションが少ないときに、CPUサイクルをさらに数回使用するかどうかは誰が気にしますか?
  • インデックス追跡コードを追加するようにコーダーを要求すると、美しさが損なわれます
  • 実装は非常に簡単で(Microsoftにお願いします)、下位互換性があります

ここでは、ほとんどの人が、マイクロソフトの従業員ではありませんが、これは正しい答え、あなたは、このような機能を追加するためにMicrosoftに働きかけることができます。拡張関数を使用して独自のイテレータを作成し、タプルを使用することはできますが、Microsoftは、拡張機能を回避するために構文糖衣構文を振りかけることができます。

5
user426810 2010-08-21 12:30.

continueこのようなキーワードセーフ構造を使用することをお勧めします

int i=-1;
foreach (Object o in collection)
{
    ++i;
    //...
    continue; //<--- safe to call, index will be increased
    //...
}
5
ssaeed 2015-01-06 08:08.

コレクションがリストの場合、次のようにList.IndexOfを使用できます。

foreach (Object o in collection)
{
    // ...
    @collection.IndexOf(o)
}
5
Satisfied 2016-08-24 05:48.

あなたはこのようにあなたのループを書くことができます:

var s = "ABCDEFG";
foreach (var item in s.GetEnumeratorWithIndex())
{
    System.Console.WriteLine("Character: {0}, Position: {1}", item.Value, item.Index);
}

次の構造体と拡張メソッドを追加した後。

structおよびextensionメソッドは、Enumerable.Select機能をカプセル化します。

public struct ValueWithIndex<T>
{
    public readonly T Value;
    public readonly int Index;

    public ValueWithIndex(T value, int index)
    {
        this.Value = value;
        this.Index = index;
    }

    public static ValueWithIndex<T> Create(T value, int index)
    {
        return new ValueWithIndex<T>(value, index);
    }
}

public static class ExtensionMethods
{
    public static IEnumerable<ValueWithIndex<T>> GetEnumeratorWithIndex<T>(this IEnumerable<T> enumerable)
    {
        return enumerable.Select(ValueWithIndex<T>.Create);
    }
}
3
ulrichb 2010-09-12 04:11.

この問題に対する私の解決策は、拡張メソッドですWithIndex()

http://code.google.com/p/ub-dotnet-utilities/source/browse/trunk/Src/Utilities/Extensions/EnumerableExtensions.cs

次のように使用します

var list = new List<int> { 1, 2, 3, 4, 5, 6 };    

var odd = list.WithIndex().Where(i => (i.Item & 1) == 1);
CollectionAssert.AreEqual(new[] { 0, 2, 4 }, odd.Select(i => i.Index));
CollectionAssert.AreEqual(new[] { 1, 3, 5 }, odd.Select(i => i.Item));
3
Matt Mitchell 2011-04-19 13:25.

興味深いことに、Phil Haackは、Razor Templated Delegate(http://haacked.com/archive/2011/04/14/a-better-razor-foreach-loop.aspx)。

事実上、彼は反復を「IteratedItem」クラス(以下を参照)にラップする拡張メソッドを作成し、反復中に要素だけでなくインデックスにもアクセスできるようにします。

public class IndexedItem<TModel> {
  public IndexedItem(int index, TModel item) {
    Index = index;
    Item = item;
  }

  public int Index { get; private set; }
  public TModel Item { get; private set; }
}

ただし、これはRazor以外の環境では問題ありませんが、単一の操作(つまり、ラムダとして提供できる操作)を実行している場合は、Razor以外のコンテキストでfor / foreach構文を確実に置き換えることはできません。 。

3
Bart Calixto 2013-03-23 03:52.

これは非常に効率的ではないと思いますが、機能します。

@foreach (var banner in Model.MainBanners) {
    @Model.MainBanners.IndexOf(banner)
}
3
Warren LaFrance 2013-10-26 06:14.

私はこれをLINQPadで構築しました:

var listOfNames = new List<string>(){"John","Steve","Anna","Chris"};

var listCount = listOfNames.Count;

var NamesWithCommas = string.Empty;

foreach (var element in listOfNames)
{
    NamesWithCommas += element;
    if(listOfNames.IndexOf(element) != listCount -1)
    {
        NamesWithCommas += ", ";
    }
}

NamesWithCommas.Dump();  //LINQPad method to write to console.

使用することもできますstring.join

var joinResult = string.Join(",", listOfNames);
2
bryansh 2008-09-04 15:46.

foreachループの現在の反復の値を取得する方法はないと思います。自分を数えるのが最善の方法のようです。

なぜあなたは知りたいのですか?

あなたは3つのことのうちの1つをするのが最も好きだと思われます:

1)コレクションからオブジェクトを取得しますが、この場合はすでにオブジェクトを持っています。

2)後処理のためにオブジェクトをカウントしています...コレクションには、使用できるCountプロパティがあります。

3)ループ内の順序に基づいてオブジェクトにプロパティを設定します...ただし、オブジェクトをコレクションに追加したときに簡単に設定できます。

2
Joseph Daigle 2008-09-04 15:44.

コレクションが何らかのメソッドを介してオブジェクトのインデックスを返すことができない限り、唯一の方法は、例のようにカウンターを使用することです。

ただし、インデックスを操作する場合、問題に対する唯一の合理的な答えは、forループを使用することです。時間とスペースの複雑さは言うまでもなく、他の何かがコードの複雑さをもたらします。

2
Matt Towers 2010-10-30 09:00.

このようなものはどうですか?myEnumerableが空の場合、myDelimitedStringがnullになる可能性があることに注意してください。

IEnumerator enumerator = myEnumerable.GetEnumerator();
string myDelimitedString;
string current = null;

if( enumerator.MoveNext() )
    current = (string)enumerator.Current;

while( null != current)
{
    current = (string)enumerator.Current; }

    myDelimitedString += current;

    if( enumerator.MoveNext() )
        myDelimitedString += DELIMITER;
    else
        break;
}
2
nicodemus13 2011-03-24 02:19.

私はちょうどこの問題を抱えていましたが、私の場合の問題について考えると、期待される解決策とは関係のない最良の解決策が得られました。

基本的に、1つのソースリストから読み取り、宛先リストでそれらに基づいてオブジェクトを作成しているのは非常に一般的なケースですが、最初にソースアイテムが有効かどうかを確認し、任意の行を返したい場合があります。エラー。一見したところ、Currentプロパティでオブジェクトの列挙子にインデックスを取得したいのですが、これらの要素をコピーしているので、現在の宛先からとにかく現在のインデックスを暗黙的に知っています。明らかにそれはあなたの宛先オブジェクトに依存します、しかし私にとってそれはリストでした、そしておそらくそれはICollectionを実装するでしょう。

すなわち。

var destinationList = new List<someObject>();
foreach (var item in itemList)
{
  var stringArray = item.Split(new char[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries);

  if (stringArray.Length != 2)
  {
    //use the destinationList Count property to give us the index into the stringArray list
    throw new Exception("Item at row " + (destinationList.Count + 1) + " has a problem.");
  }
  else
  {
    destinationList.Add(new someObject() { Prop1 = stringArray[0], Prop2 = stringArray[1]});
  }
}

常に適用できるとは限りませんが、言及する価値があると思います。

とにかく、ポイントは、あなたが持っているロジックにすでに自明でない解決策がある場合があるということです...

2
Kasey Speakman 2011-09-15 09:03.

質問に基づいて、インデックス情報で何をしようとしているのかわかりませんでした。ただし、C#では、通常、IEnumerable.Selectメソッドを適応させて、必要なものからインデックスを取得できます。たとえば、値が奇数か偶数かに関係なく、このようなものを使用する場合があります。

string[] names = { "one", "two", "three" };
var oddOrEvenByName = names
    .Select((name, index) => new KeyValuePair<string, int>(name, index % 2))
    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

これにより、アイテムがリスト内で奇数(1)か偶数(0)かを示す名前の辞書が表示されます。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

驚くほど素晴らしいDropMixミュージックミキシングカードゲームは30ドルで驚くべき取引です

DropMixはNFC対応のカードゲームで、基本的にはリミックスアーティストになります。現在、Amazonでは$ 30まで下がっており、これまでで最高の価格に匹敵します。ロックバンドで有名なHarmonixによって開発されたDropMixは、おそらく少し野心的すぎるように思われます。結局のところ、ほとんどの人は素晴らしいリズムを持っていませんが、ゲームは驚くほどうまく実行されます。

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

メアリーJ.ブライジがついにハリウッドウォークオブフェイムスターを獲得

写真:APメアリーJ.ブライジは、間もなくハリウッドウォークオブフェイムのスターを獲得します。これは、メアリーJよりもハリウッドウォークオブフェイムのほうが正直なところ恩恵です。

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

MeltdownとSpectreの脆弱性についてこれまでに知っていることはすべて、簡単な方法で説明されています

画像:グラズ工科大学/ NataschaEiblがデザインしたロゴ。MeltdownとSpectreは、攻撃者がシステムメモリに保存されているあらゆる種類の情報にアクセスできるようにする2つの脆弱性に付けられた名前です。

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

彼のニューヨークの家から追い出されようとしている97歳の第二次世界大戦の獣医。メリーエフィングクリスマス

日本人に襲われたときに真珠湾にいた97歳の第二次世界大戦のベテランが、ニューヨークのブルックリンから追い出されています。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language