Closed ufcpp closed 2 years ago
Console.WriteLine("""
a
""".Length); // これが長さ5になってる。仕様変わった?それかまだ実装してないだけ?
その後見つけた挙動。バグっぽい。
var raw = """
a
""";
Console.WriteLine(raw.Length); // 1
Console.WriteLine("""
a
""".Length); // 5
17.2p1 時点、StringSyntax 認識してなくない?
using System.Net;
using System.Text.Json;
using System.Text.RegularExpressions;
JsonDocument.Parse(@"
{
""id"": 123,
""name"": ""abc"",
""data"": [ true, null, 1.23 ]
}
");
Regex.Match("", @"\w+?"); // OK (昔からある特殊対応)
_ = new WebProxy("", true, new[] { @"\w+?" }); // 属性付いたのに
partial class R
{
[RegexGenerator(@"\w+?")] // 属性付いてるのに
public static partial Regex Digit3();
}
属性
17.2p1 どころか、17.1 リリース版でも、
JsonDocument.Parse(@"
{
""id"": 123,
""name"": ""abc"",
""data"": [ true, null, 1.23 ],
}
} // ここ OK になっちゃう。1個しか警告出ない疑惑
}
}
");
パースできるくせに警告だすんかいw
#pragma warning disable JSON001 // これ効き目あり
JsonDocument.Parse(@"
{
""id"": 123,
""name"": ""abc"",
""data"": [ true, null, 1.23 ],
}
");
ほしい(ない)
//lang=xml
var xml = @"<xml />";
//lang=csharp
var generated = $$"""
class {{name}}
{
public int {{prop}} { get; init; }
}
""";
効いた。
implicit cast OK らしい。
m("[true, null]");
void m([StringSyntax("Json")] XNamespace r) { }
// 夢広がる?
m("[true, null]");
void m([StringSyntax("Json")] MyJsonShim r) { }
class MyJsonShim
{
public static implicit operator MyJsonShim(string s) { }
public static implicit operator JsonObject(MyJsonShim s) { }
}
// 未対応だけど、はよ
//lang=json
var rawString = $$"""
{
"id": {{id}},
"name": "abc",
"data": [ true, null, 1.23 ]
}
""";
Console.WriteLine("""
a
""".Length); // 5 になるんだけどバグか?
// ちなみに、自分のミス。
// 正しくはこう。
Console.WriteLine("""
a
""".Length); // ここのインデント必要。これなら1
Console.WriteLine("""
""".Length); // これが empty ということは…
Console.WriteLine("""
""".Length); // これはエラー。
// この2行は同じ結果になってそう
[RegexGenerator(_pattern)]
public static partial Regex A();
[RegexGenerator(_pattern, RegexOptions.Compiled)]
public static partial Regex B();
remove unnecessary lambda expression は↓こういう話。
using System.Numerics;
var v = new Vector3(1, 2, 3);
Console.WriteLine(v[0]);
Console.WriteLine(v[1]);
Console.WriteLine(v[2]);
Console.WriteLine(v.Length()); // √14
if (v is [1, 2, 3]) ; // コンパイルエラーになったよかった。
System.Drawing 非 Windows 退役 ↓ Microsoft.Maui.Graphics が後継候補
配信URL: https://www.youtube.com/watch?v=LLJVu161eVM
Visual Studio の方が先に出た
.NET 7 も出た
https://twitter.com/ufcpp/status/1493745221384822784
lang=json と raw string literal。 utf8 string literal はまだっぽい。
raw string literal、Preview 1 時点では IDE 側の対応が微妙に間に合ってなさげ。 リテラル内、 ctrl+矢印 移動の挙動がちょいへん。 リテラル内のインデントが狂う。 lang= 効いてない。