[解決済み】C# 6.0は.NET 4.0に対応しますか?
2022-04-15 22:09:49
質問
サンプルプロジェクトを作成し、C#6.0の良いところであるヌル伝搬とプロパティの初期化を例として、ターゲットバージョンを.NET 4.0に設定したところ、...動作しました。
public class Cat
{
public int TailLength { get; set; } = 4;
public Cat Friend { get; set; }
public string Mew() { return "Mew!"; }
}
class Program
{
static void Main(string[] args)
{
var cat = new Cat {Friend = new Cat()};
Console.WriteLine(cat?.Friend.Mew());
Console.WriteLine(cat?.Friend?.Friend?.Mew() ?? "Null");
Console.WriteLine(cat?.Friend?.Friend?.TailLength ?? 0);
}
}
- ウィキペディアによると .NET framework for C# 6.0は4.6です。
- この質問 (そして ビジュアルスタジオ2015 CTPテスト)では、CLRのバージョンは4.0.30319.0と表示されています。
- このMSDNページ によると、.NET 4, 4.5, 4.5.2 は CLR 4 を使用しているそうです。.NET 4.6 については情報がありません。
.NET 4.0をターゲットにしたソフトウェアにC# 6.0の機能を使えるということでしょうか?また、制限や欠点はありますか?
どのように解決するのですか?
はい(ほとんど)。C# 6.0は新しいRoslynコンパイラーを必要としますが、新しいコンパイラーは古いフレームワークのバージョンをターゲットにしてコンパイルすることができます。それは、以下のような新機能に限られます。 フレームワークのサポートを必要としない .
例えば、C# 6.0 の文字列補間機能は、.Net の以前のバージョンでも使用できますが(結果的に
string.Format
):
int i = 3;
string s = $"{i}";
で使用するには、.Net 4.6が必要です。
IFormattable
新しいフレームワークのバージョンだけが
System.FormattableString
:
int i = 3;
IFormattable s = $"{i}";
あなたが言ったケースは、フレームワークからの型がなくても動作します。ですから、コンパイラは古いフレームワークのバージョンでも、これらの機能を完全にサポートすることができます。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] URLのPath.Combineは?
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] .NETでフォーマット文字列のブレース(中括弧)をエスケープする方法
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] .NET String.Format()で数値の千の位にカンマを追加する
-
[解決済み] .NETでGmailを使ったメール送信
-
[解決済み] C# 6.0のクエスチョンマークとドット演算子「?」の意味は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。