私が C# で見たいのは、タプルに関するより良い構文です。
var rgb = (1.0f, 1.0f, 1.0f);
// Inferred to be Tuple<float, float, float>
// Translated to var rgb = Tuple.Create(1.0f, 1.0f, 1.0f)
と
var x, y, z = rgb;
// Translated to:
// float x = rgb.Item1;
// float y = rgb.Item2;
// float z = rgb.Item3;
これを禁止する、または達成するのが難しすぎる/非現実的である C# 言語には何かありますか? おそらく、これと直接衝突する他の言語機能がありますか?
これが Microsoft のレーダーにあるのか、それとも C# に対する彼らのビジョンと一致するのか、理論的に明らかな障害があるかどうかを尋ねているわけではないことに注意してください。
編集 他の CLI 言語の例をいくつか示します
// Nemerle - will use a tuple type from a language specific runtime library
def colour = (0.5f, 0.5f, 1.0f);
def (r, g, b) = colour;
// F# - Will use either a library type or `System.Tuple` depending on the framework version.
let colour = (0.5f, 0.5f, 1.0f)
let (r, g, b) = colour
// Boo - uses CLI array
def colour = (0.5, 0.5, 1.0)
def r, g, b = colour
// Cobra - uses CLI array
var colour = (0.5, 0.5, 1.0)
var r, g, b = colour
配列を使用することは良い妥協案のように思えるかもしれませんが、型を混在させると制限になります。let a, b = (1, "one")
F# または Nemerle はTuple<int, string>
. Boo または Cobra では、これによりobject[]
.
タプルのEdit2 言語サポートが C# 7 に追加されました - https://www.kenneth-truyers.net/2016/01/20/new-features-in-c-sharp-7/