2009-06-19 21 views
0

プロジェクトを.NET 2.0から3.5に変換し、3.5フレームワークを利用して行うことができる最適化を探しています。 Datastructuresのように私が3.5でできることのいくつかは何ですか?また、LINQとは別にDataAccessを使用する際の提案。 すべての提案/ポインタが素晴らしいでしょう。私は特定の最適化を見ていない、ただ一般的な。また、私はVB.NETを使用しています:(2.0から3.5への変換後の.NET 3.5の最適化

+1

最大の最適化は、C#に切り替えることです。 – Randolpho

答えて

2

このリンクは、ほとんどすべての新しいVB 9を提供します。一目で0機能:

http://msdn.microsoft.com/en-us/library/ms364068.aspx

  • 暗黙的に型指定されたローカル変数
  • オブジェクトと配列初期化子
  • 匿名型
  • ディープXMLのサポート
  • クエリ内包拡張
  • 方法とラムダ式
  • 件のNullable型
  • リラックス代表
3

私はあなたが最適化によって何を意味するのか全くわからない。あなたが少しを明確にすることはできますか?

を3.5フレームワークと対応するVB.Netコンパイラを約そんなにありませんでしたLINQ(言語統合クエリ)を取り巻く概念についてはるかに詳しく説明しています。これは、多少異なるソースで使用できるSQLに似ている汎用クエリ言語を定義する方法です。

たとえば、生徒のリストを持っていて、特定の名前を持つものを取得したいと思っていました.LINQの前に、次のようなものを書いてください。

Dim list As New List<Student>() 
For Each cur in col 
    if cur.Name = SomeName Then 
    list.Add(cur) 
    End If 
Next 

LINQは大幅にあなたはVB.Netでイテレータを書き込むことができないので、これは、C#の上多少依存している以下の

Dim result = From cur in col Where cur.Name = SomeName 
4

を書くせることで、これを簡素化します。しかし私にとって大きなパフォーマンスの向上は、Iterator + Extension Method +ラムダ式コンボです。イテレータは.Net 2.0でも利用できましたが、IEnumerable拡張メソッドと組み合わせると、突然非常に強力な最適化ツールが使用されます。

たとえば、ファイルを読み込んで特定のテキストを含むすべての行を取得するコードがあるとします。 .Net 2.0では、File.ReadAllLinesを使用するか、ストリームリーダーで反復処理します。 .NET 3.5ではイテレータとストリームリーダーをラップして、このようなコードを書くことができます:あなたは.NET 2.0でそれに近い取得するコードを記述する可能性があるため

ReadLines(@"C:\MyFile.txt").Where(l => l.Contains("search text")); 

さて、これは、すべてのこと特別なものではありません。しかし、本当にクールなことは、あなたがフィルタを追加し続けることができます:

var query = ReadLines(@"C:\MyFile.txt") 
          .Where(l => l.Contains("search text")) 
          .Select(l => int.Parse(l.SubStrin(5,8)) 
          .Where(i => i > 10); 

int sum=0; 
foreach (int value in query) 
{ 
    sum += value; 
} 

ポップクイズ—何回するファイルの結果の上にそのコードの反復処理?答えはまさに1つです。新しい.Where()または.Select()を追加しても、結果が再びループオーバーすることはありません。むしろ、列挙型のパイプラインを作成するために実行を延期します。

.Net 2.0で同様のパフォーマンスを得るには、ファイルの読み込みと読み込みを含むもっと長い関数を書くか、IEnumerableを実装するもっと複雑なクラスを用意するか、カスタム代理人ほとんどのプログラマーは理解しません。

これにより、非常にシンプルで非常に再利用可能な方法でファイルを読み取るコードを抽象化することができます。その結果、コードは効率的なコードを書くのに役立ちます。楽しい部分はです。 VB.Netからこれをいくつか使用してください:あなたは書きたいイテレータを保持するためにC#アセンブリをどこかに持っていなければなりません。VB.Netコードは次のようになります:

Dim query = ReadLines("C:\MyFile.txt") _ 
         .Where(Function(l) l.Contains("search text")) _ 
         .Select(Function(l) Integer.Parse(l.SubString(5,8)) _ 
         .Where(Function(i) i > 10) 

Dim sum As Integer = 0 
For Each value As Integer In query 
    sum += value 
Next value 
+0

これは本当に素晴らしいおかげです。 – Greens

1

VB 9あなたが行うことができますクールなXMLプリミティブ型があります。かなりクールです

Dim book As XElement = _ 
    <book category="fiction" isbn=<%= isbnNumber %>> 
     <modifiedDate><%= modifiedDate %></modifiedDate> 
    </book> 

を! (コードはmsdnから取られました)

+0

ええ、これはクールです。それは私が望むVBの唯一の機能(構文の砂糖)はCであった# –

0

2.0でリモート処理またはシリアライゼーションを使用している場合は、WCFリモート/シリアル化に切り替えることができます。

+0

いい男感謝 – Greens

関連する問題