Q1. WCF の開発コード名は?
Question
A. Avalon
B. Indigo
C. Longhorn
Slide 8
Slide 8 text
Q1. WCF の開発コード名は?
Question
A. Avalon
B. Indigo
C. Longhorn
WCF のコード名は「Indigo」です。WCF は、Windows Communication Foundation の略称で、Windows アプリ
ケーションのためのサービス指向アプリケーションを構築するためのフレームワークです。WCF を使用すると、1 つのサービス
エンドポイントから別のサービスエンドポイントに非同期メッセージとしてデータを送信できます。WCF は、Web サービスと
Web サービスクライアントを作成するための管理しやすいアプローチを提供するように設計されています。
Windows Communication Foundation とは - WCF | Microsoft Learn
Slide 9
Slide 9 text
Q2. dotnet コマンドの初期の名称は?
Question
A. k
B. d
C. f
Slide 10
Slide 10 text
Q2. dotnet コマンドの初期の名称は?
Question
A. k
B. d
C. f
Imran Qadir Baksh (Baloch) Blog - K (dnu), KVM (dnvm), KPM (dnu), KLR, KRE (dnx) in ASP.NET Core
Slide 11
Slide 11 text
Q3. .NET Aspire リリース予定はいつ?
Question
A. 2024 年 4 月 〜 6 月
B. 2024 年 7 月 〜 9 月
C. 2024 年 10 月 〜 12 月
Slide 12
Slide 12 text
Q3. .NET Aspire リリース予定はいつ?
Question
A. 2024 年 4 月 〜 6 月
B. 2024 年 7 月 〜 9 月
C. 2024 年 10 月 〜 12 月
カレンダーイヤー 2024 年の Q2、というアナウンスがあります。それまでに機能がいっぱい追加されそうですね。
.NET Aspire documentation (Preview) | Microsoft Learn
Slide 13
Slide 13 text
Q4. 次はログ出力するコードです。
さて.NET 8 で追加になったのはどの部分でしょう?
Question
A. LoggerMessage 属性
B. LogProperties 属性
C. アクセス修飾子の付いた partial メソッド
D.追加になっていない。コンパイルエラーになる
public static partial class MyLogger
{
[LoggerMessage(1, LogLevel.Information, "DoSomething
Message")]
public static partial void DoSomething(this ILogger
logger, [LogProperties] MyService service);
}
Slide 14
Slide 14 text
Q4. 次はログ出力するコードです。
さて.NET 8 で追加になったのはどの部分でしょう?
Question
A. LoggerMessage 属性
B. LogProperties 属性
C. アクセス修飾子の付いた partial メソッド
D.追加になっていない。コンパイルエラーになる
public static partial class MyLogger
{
[LoggerMessage(1, LogLevel.Information, "DoSomething
Message")]
public static partial void DoSomething(this ILogger
logger, [LogProperties] MyService service);
}
.NET Conf 2023 で紹介された機能です。
インスタンスを渡すことで Public なプロパティをログ出力できるようになりました。便利ですね。
コンパイル時のログ ソース生成 - .NET | Microsoft Learn
Behind [LogProperties] and the new telemetry logging source generator (andrewlock.net)
Slide 15
Slide 15 text
Q5. ASP.NET Core Blazor で
.NET 8 で追加された新しいプロジェクトテンプレートは?
Question
A. Blazor Hybrid
C. Blazor Web App
D. Blazor WebAssembly
B. Blazor Server
Slide 16
Slide 16 text
Q5. ASP.NET Core Blazor で
.NET 8 で追加された新しいプロジェクトテンプレートは?
Question
A. Blazor Hybrid
C. Blazor Web App
D. Blazor WebAssembly
B. Blazor Server
.NET 8 で追加された新しいプロジェクトテンプレートは Blazor Web App です。
このプロジェクトテンプレートで Server、WebAssembly に加えて新しい SSR を統合したアプリケーションの開発が出来ます。
ASP.NET Core Blazor プロジェクトの構造 | Microsoft Learn
Slide 17
Slide 17 text
Q6. Blazor で初回は Server モードで動いて 2 回目以降
は WebAssembly で動くようにするために設定する
レンダーモードはどれ?
Question
A. @rendermode Interactive
C. @rendermode InteractiveServer
D. @rendermode InteractiveWebAssembly
B. @rendermode InteractiveAuto
Slide 18
Slide 18 text
Q6. Blazor で初回は Server モードで動いて 2 回目以降
は WebAssembly で動くようにするために設定する
レンダーモードはどれ?
Question
A. @rendermode Interactive
C. @rendermode InteractiveServer
D. @rendermode InteractiveWebAssembly
B. @rendermode InteractiveAuto
@rendermode InteractiveAuto で実行時に自動でレンダリングモードが決まるのは自動 (Auto) なので
@rendermode InteractiveAuto になります。
ASP.NET Core Blazor のレンダー モード | Microsoft Learn
Slide 19
Slide 19 text
Q7. 以下のうち C# 12 の機能ではないものはどれ?
Question
A. コレクション式
C. ref readonly 引数
D. ¥e エスケープ
B. プライマリ コンストラクタ
Slide 20
Slide 20 text
Q7. 以下のうち C# 12 の機能ではないものはどれ?
Question
A. コレクション式
C. ref readonly 引数
D. ¥e エスケープ
B. プライマリ コンストラクタ
「¥e エスケープ」は C# の次期バージョンである C# 13 で導入される機能です。
すでに Visual Studio 17.9 Preview 1 に搭載されており、実際に利用することができます。
C# 12 の新機能 - C# ガイド - C# | Microsoft Learn
Slide 21
Slide 21 text
Q8. プライマリ コンストラクタで Backing Field が
複数できるときのコンパイラ警告はどれ?
Question
A. CA1304
C. CS9124
D. IDE0290
B. CA2016
Slide 22
Slide 22 text
Q8. プライマリ コンストラクタで Backing Field が
複数できるときのコンパイラ警告はどれ?
Question
A. CA1304 「CultureInfo を指定すべし」
C. CS9124 「Backing Field が複数できるからアカンで」
D. IDE0290 「プライマリ コンストラクタが使えるよ」
B. CA2016 「CancellationToken を指定すべし」
コンストラクター宣言に関連するエラーを解決する - C# | Microsoft Learn
Slide 23
Slide 23 text
Q9. 次のコードで得られる文字列は?
Question
A. “.NET 8 is cool”
B. “Chack is super”
C. “Love developer”
var result = "¥u0098ÞìÊ@ÈÊìÊØÞàÊä";
Console.WriteLine(GetAnswer(result));
string GetAnswer(string result)
{
var answer = string.Empty;
foreach (char c in result)
{
int asciiValue = (int)c;
int shiftedValue = asciiValue >> 1;
answer += (char)shiftedValue;
}
return answer;
}
Slide 24
Slide 24 text
Q9. 次のコードで得られる文字列は?
Question
A. “.NET 8 is cool”
B. “Chack is super”
C. “Love developer”
var result = "¥u0098ÞìÊ@ÈÊìÊØÞàÊä";
Console.WriteLine(GetAnswer(result));
string GetAnswer(string result)
{
var answer = string.Empty;
foreach (char c in result)
{
int asciiValue = (int)c;
int shiftedValue = asciiValue >> 1;
answer += (char)shiftedValue;
}
return answer;
}
Slide 25
Slide 25 text
.NET 8
ライブコーディング対決!
Microsoft MVP + マイクロソフト社員が
熱いバトルを繰り広げます
Slide 26
Slide 26 text
本日のライブコーディング プレイヤーの皆さま
鈴木 孝明
(@xin9le)
河合 宜文
(@neuecc)
初音 玲
(@hatsune_)
草場 友光
(tomo_kusaba)
大田 一希
(@okazuki)
Microsoft MVP for
Developer Technologies
Microsoft MVP for
Developer Technologies
Microsoft MVP for
Windows Development
Microsoft MVP for
Developer Technologies
日本マイクロソフト株式会社
Cloud Solution Architect
解答例
public sealed class ZonedTimeProvider : TimeProvider
{
private readonly TimeZoneInfo _timeZone;
public ZonedTimeProvider(TimeZoneInfo timeZone)
: base()
=> this._timeZone = timeZone;
public override TimeZoneInfo LocalTimeZone
=> this._timeZone;
}
Slide 33
Slide 33 text
解答例
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var timeProvider = new ZonedTimeProvider(timeZone);
var timer = timeProvider.CreateTimer
(
callback: static state =>
{
var tp = (ZonedTimeProvider)state!;
tp.GetLocalNow().Dump();
},
state: timeProvider,
dueTime: TimeSpan.Zero,
period: TimeSpan.FromSeconds(1)
);