2個以上の要素を持つタプルのための記法が導入された。引数リストと同様の形式で、タプルを記述できる。// タプル記法(int, string) tuple = (123, "Apple");Console.WriteLine($"{tuple.Item1}個の{tuple.Item2}");
switch文のマッチ方法が拡張され、caseラベルに従来の「定数パターン」に加え、新たに「型パターン」を指定できるようになった。また、「型パターン」のcaseラベルでは、when句に条件を指定することができる。「型パターン」を含むswitch文では、必ずしも条件が排他的でなくなったため、最初にマッチしたcaseラベルの処理が実行される。void Decide(object obj) {    switch (obj) {        case int num when num < 0:            Console.WriteLine($"{num}は負の数です。");            break;        case int num:            Console.WriteLine($"{num}を二乗すると{num * num}です。");            break;        case "B":            Console.WriteLine($"これはBです。");            break;        case string str when str.StartsWith("H"):            Console.WriteLine($"{str}はHから始まる文字列です。");            break;        case string str:            Console.WriteLine($"{str}は文字列です。");            break;        case null:            Console.WriteLine($"nullです");            break;        default:            Console.WriteLine("判別できませんでした");            break;    }}
is式の構文が拡張され、型の後ろに変数名を宣言できるようになった。拡張されたis式はマッチした場合に宣言した変数にキャストした値を代入し、さらにtrueと評価される。マッチしなかった場合はfalseと評価され、宣言した変数は未初期化状態となる。void CheckAndSquare(object obj) {    // objの型チェックと同時にnumに値を代入する。    if (obj is int num && num >= 0) {        num = num * num;    }    else {        num = 0;    }    // if文の条件セクションは、ifの外側と同じスコープ    Console.WriteLine(num);}
out引数で値を受け取る場合、その場所で変数宣言可能となった。total += int.TryParse("123", out var num) ? num : 0;
catchの後にwhenキーワードを使用することで、処理する例外を限定することができるようになった。try {    // ...}catch (AggregateException ex) when (ex.InnerException is ArgumentException) {    // ...}
静的 using ディレクティブを利用することで、型名の指定無しに他クラスの静的メンバーの呼び出しを行えるようになった。利用するにはusing staticの後に完全修飾なクラス名を指定する。using static System.Math;// ↑ソースコードの上部で宣言class Hogehoge {    // System.Math.Pow() , System.Math.PI を修飾無しで呼び出す    double area = Pow(radius, 2) * PI;}
プロイセン軍は戦闘に勝利してライヒェンベルクを占領した。敗れたオーストリア軍も受けた打撃は限定的であり、ケーニヒスエックは戦況を仕切り直して再戦を挑む考えだった。ライヒェンベルクから撤退したケーニヒスエックはリーベナウまで後退してマクワイアと合流し、同地で再び地形を生かした堅固な陣を敷いてプロイセン軍を待ち構えた。ベーヴェルンはライヒェンベルクからケーニヒスエックを追ってリーベナウに進出したが、その陣地が堅固なのを見て手出しをしなかった。ベーヴェルンはこのときすでに、ケーニヒスエックが長く同地に留まれはしないことを知っていた。ベーヴェルン軍とケーニヒスエック軍がベーメン北部で対峙している間、東のシュレージエンからシュヴェリーン軍がベーメンに進軍していた。シュヴェリーンはケーニヒグレーツを守るセルベローニ軍の前を素通りしてエルベ右岸に渡り、ベーヴェルン軍と合流するべく西進を続けていた。味方によって守られているはずの東後方から敵軍が現れたことを知ったケーニヒスエックは敵の罠に嵌っていたことを悟り、リーベナウの陣地を放棄してプロイセン軍による包囲から脱出した。リーベナウ南方に進出したシュヴェリーンは、イーザー川を間に挟んで進むベーヴェルンとの合流を図りつつ、同時に西方向への進軍を続けて北部ベーメンの重要基地であるユング・ブンツラウの奪取を目指した。リーベナウから撤退したケーニヒスエックはイーザー川西岸を強行軍で南下し、ベーヴェルン軍の追撃をかわしながらユング・ブンツラウを救出しようとした。しかしシュヴェリーンはケーニヒスエックに一歩先んじてイーザー川東岸に部隊を進出させ、オーストリア軍の西岸からの渡河を阻止することに成功した。プロイセン軍はユング・ブンツラウを占領し、その物資をほぼ無傷で手に入れた。ユング・ブンツラウの救出に失敗したケーニヒスエックはエルベ右岸域の防衛を断念、自軍に重ねて強行軍を命じてユング・ブンツラウを西に迂回しながらイーザー川西岸を下ってエルベ左岸ブランダイスに撤退した。左岸への撤退後、ケーニヒスエックはエルベ川を障害にしてプロイセン軍の南下を阻止する態勢を構築した。ベーヴェルン軍を自軍に併せたシュヴェリーンの次の目標はエルベ左岸をプラハ方面に進撃するフリードリヒ大王直率軍に合流することだったが、ケーニヒスエックがエルベ川を良く守ったので、これを渡河することができなかった。しかし、大王に圧迫されたカール公子が自軍の強化を優先してケーニヒスエックをプラハに呼び戻したので、プロイセン軍の渡河を阻止するものはなくなった。かくしてシュヴェリーンとベーヴェルンもエルベ川を南に渡河してケーニヒスエックの後を追い、戦役はプラハ会戦に繋がっていく。