質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

3回答

1660閲覧

.NET Framework 価値

ranran

総合スコア85

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2015/02/01 02:31

.Net Framework 1.0 からのバージョンの遷移を尋ねたく質問いたしました。
ネット上を検索し、技術的な追加等は理解できるのですが、
それがどれほどすごい技術の変化なのか、いかに使いやすくなったのか想像がつきません。

そこで.Net Framework の当時を知っている方に、
時代背景、どのような技術が取り込まれたか、いかに便利になったのか、どのような変化を業界に与えたのか教えてください。

今現在、当たり前に活用している.Net Framework の価値を認識できたらと思います。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Javaなど他の言語も対応したジェネリック(テンプレート)機能が一番大きかったかと。
さらにメソッドにwhereで型制約を付けられるので、ダウンキャストが不要になるのがありがたかったですね。

lang

1public class Sample<T> 2{ 3 public T Find<T>(int id) where T : new() { 4 ... 5 return new T(); 6 } 7}

この例では引数なしのデフォルトコンストラクタを持つ型Tだけが渡せます。

投稿2015/02/20 00:06

編集2015/02/20 01:32
shinosan

総合スコア209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ranran

2015/02/20 00:52

ただ今調べたことなので間違えていましたら、大変恐縮なのですが Java に対応したジェネリックというのはja.NETによりEJBオブジェクトをジェネリックとして使用できるということでしょうか。 ダウンキャストは意識したことがありませんでした。 String → object → long のキャストしましたがビルドにエラーが出ませんでした、 こうなってくるとコード見ただけでは型がわからないので型制約は重要なのかな? と思いましたが認識あってますでしょうか。 重ね重ねの質問すみません。
shinosan

2015/02/20 01:17

用語が統一されていないのでややこしいですね。 ジェネリックとは、クラスのメンバやメソッドの引数・戻り値の型をパラメータとして渡す仕組みです。特にコレクション・ライブラリでは威力を発揮します。 それまでのコレクションは、Listでも何でもobject型で保持していて、これをstringなどにダウンキャストしないといけなかったのが、List<string>で文字列を保持すると明示的に宣言できるわけです。 初めはC++だったと思いますが、C#は実行時型情報が扱いやすいので、さらに強力になってます。 where制約は、メソッドの引数に渡す型を特定クラスの派生型に絞ったり、特定のメソッドを持つものに絞ることが出来ます。これで、渡されたオブジェクトをダウンキャストせずにメソッドなどの呼び出しが出来ます。 JavaはC#より遅れてジェネリックに対応しましたが、上記のwhereのような言語拡張がなくてダウンキャストを排除し切れてません。
ranran

2015/02/20 06:41

コレクションがobject型での保持となるととても扱いずらそうです 今はジェネリックにより型を明示的にできるのでとても楽だなと実感できました 回答ありがとうございました!
guest

0

C#のバージョンの話も絡んでしまいますが…
たくさんありますがとりあえず3つ

  • LINQ - コレクションの操作が劇的に楽に見やすくなった
  • 非同期処理/並列処理 - これもやっぱり簡単になり、ロジックを書くことに集中できるようになった
  • HttpClient - これも上記と同様

特に非同期は最初の頃、仕事でプログラムを書き出したばかりで、C#も使い始めたばかりということもありBeginInvokedelegateがなかなか理解できず苦労しました。
TPL、Rx、async/awaitとどんどん進化していき、昔の書き方にはもう戻れません。

↓のサイトがバージョンの遷移や旧バージョンと新バージョンでの書き方が載っていてわかりやすいです。
++C++;// 未確認飛行 C

投稿2015/02/03 12:49

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ranran

2015/02/03 15:17

回答いただきありがとうございます。 LINQすごく便利ですよね。 最近使い始めましたが、配列,xml,dataset等へ同じような構文でアクセスでき、かつシンプルでありすごく楽です。 すらすらとLINQを使いこなせるよう精進したいと思います。 他の2つは意識したことがありません、これを機会に調べてみます。 ありがとうございました。
ranran

2015/02/20 06:48

ベストアンサー決定の状態ですと解決済みとなってしまうので、申し訳ないですが外させてもらいました。 大変失礼と存じますが、 他の方の目線から見た.net Frameworkをより多く知りたいと思います。
Ryzna

2015/02/20 12:27

スレッドセーフなコレクションを用意してくれるとか胸が熱くなりますよね。
ranran

2015/02/20 16:24

スレッドセーフにしろLINQにしろさまざな人が悩み考え作り出された技術、 その一端にでも触れられてることをうれしく思います♪
guest

0

大きいところが出てるんで蛇足かもしれませんが1点。
技術といって良いのかわかりませんが、同一framework上で複数の言語に標準で対応しているってところじゃないですかね。
1モジュールでってわけにはいきませんが画面はVBかC#、速度がほしいエンジン部分はC++(とはいえマネージとして)みたいな。
なら全部C++でいいんじゃね?って気もしなくも無いですが開発費用削減には結構ありがたいんじゃなかろうかと。勉強する側としてもこれにずいぶん助けられました。
私情入りまくりですが、もともとBASIC(N88とかMSXとか)しかやってきてない人間が今では曲がりなりにも.netの開発者として飯食わせて貰えてるんでなお更ですかね・・・。

投稿2015/02/20 11:19

Ryzna

総合スコア85

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ranran

2015/02/20 11:59

vb,C++,C#を組み合わせられるのはすごいことですよね! 初めて.net frameworkに触れた際、プロジェクト単位で組み合わせられることを知り驚きました。 今までvbしか触ったことがないので是非、C#、C++の強みを教えてください。 今後C#,C++にて触れていきたいと思いますので参考にいたします。
Ryzna

2015/02/20 12:23

正直あんまり考えたこと無いですね。。。 VBはもともとの畑なんで"楽"の一言。でも長く使うならC#のほうが楽(構文などで)。マネージのC++ってアンマネージのラッパーくらいでしか使ったこと無いけどある意味それが強みかもしれない。
ranran

2015/02/20 15:13

それぞれの言語に魅力があり、奥が深くとても興味深いです。 最近はC#の話をよく聞くので今後使ってみようかなと思います。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問