-
-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LDM 話& .NET Conf: Focus on Windows 周りとか #28
Comments
using System;
int x;
var (x1, y1)
= (x, var y) // 式の途中はダメ!
= (1, "abc");
Console.WriteLine(x);
Console.WriteLine(y); |
raw string // C# in C# in C# in ...
// lang=csharp
const string s1 = """"""
// lang=csharp
var first = """""
// lang=csharp
var second = """"
// まあ、多分、1段以上の highlight はしないんじゃない?
var third = """
abc
""";
"""";
""""";
"""""";
var s = @"
""abc"" // このエスケープがいや
";
var csharp = $@"
class C
{{ // このエスケープがいや
}}
";
// $""" には断固反対 |
// *1 と *2 が等価
var a1 = """
abc
""";
var a2 = @"abc
";
var b1 = """
abc""";
var b2 = @"abc";
var c1 = """
abc
""";
var c2 = @"abc
";
var d1 = """
abc
def
ghi
""";
var a2 = @"abc
def
ghi
"; |
// 調べる
var a1 = """"
abc""""""";
// ↑を abc""" 扱いすることは可能か? |
// 1行目よりも小さいインデントはあり
var a1 = """
abc
def
ghi
""";
var a2 = @"abc
def
ghi
"; |
string interpolation はアロケーションかかりすぎてやばい ILogger logger;
logger.Log<(int, int, int)>(
LogLevel.Information,
default ,
(1, 2, 3),
null,
(t, m) => $"{t.Item1} {t.Item2} {t.Item3}");
logger.LogInformation($"{1} {2} {3}"); // ログレベルによらずアロケーション |
文字列処理を stack ベースにするのはむっちゃ大変。 // https://github.com/dotnet/csharplang/pull/4486
// string interpolation を ref struct + TryFormat に展開しようという話。
// ref struct だと…
// これ、OK
var s = $"{await Task.Run(() => 1)}";
// これ、どうすんだ?
async Task m()
{
await Task.Yield();
//Span<byte> s; // 書けない
// 書けてもいいのに
r(stackalloc byte[1]); // これはいける
await Task.Yield();
local(); // これは余裕
await Task.Yield();
static void local()
{
Span<byte> s = stackalloc byte[1];
}
}
void r(Span<byte> s) { }
IEnumerator m1()
{
yield return 0;
Span<byte> s = stackalloc byte[1]; // 書ける!
var x = s[0];
yield return 0;
} |
進捗 1/3 でした |
締めの言葉 lang=csharp |
配信後気づいた話: async Task m()
{
r1(stackalloc byte[1], await Task.Run(() => 1)); // これダメ
r2(await Task.Run(() => 1), stackalloc byte[1]); // こっち OK。評価順的に stackalloc が await をまたがない。
}
void r1(Span<byte> s, int x) { }
void r2(int x, Span<byte> s) { } |
8:28~ Blazor Desktop/Hybrid の話は丸投げしていい? 10:35~ 🍣 |
51:56~ enum の補完が賢くなった そもそも今、C# の文法的に |
59:10 改行周りのリファクタリング |
1:03:30 |
1:22:33~ 言語内言語の話 |
1:34:19~ 複数行リテラルとエスケープしないリテラルの話 |
1:49:18~ 改行とか先頭空白の話 #28 (comment) |
1:59:11~ 行きつく先は「生 Append」 その後ブログちゃんと書いた: Improved Interpolated Strings 2:10:26~ (Improved Interpolated Strings の実装で) ref struct の地雷踏みそう #28 (comment) |
配信枠: https://youtu.be/99ek2n6F_1U
Visual Studio 16.9 Release と 16.10 Preview 1が来ちゃったんでそっち優先するかも。
Ignite に合わせてのリリース?
https://focus.dotnetconf.net/ とかもちょっと触れつつ。
Blazor Desktop の話ちょっとかずきさんに丸投げ気味に
あと、 #27 に書いたリスト、多分1回では終わらないので終わるところまでやる。
とりあえず3件はブログ書いたのでそれ優先
The text was updated successfully, but these errors were encountered: