>>764
・IL 上はだいぶ変わる(バイナリ互換の問題)
メソッドコールかフィールドアクセスになる
コード互換で言えば、ref で渡せるかどうか程度かな

・リフレクションもだいぶ変わる(バインディングで問題)
var props = TypeDescriptor.GetProperties(typeof(Data));
var prop = props["Key"];

・パフォーマンスかなと考えてもメンバ string だし

まとめると、少しでも変更に耐性のあるプロパティにしとけ
みたいな。というかフィールドにする意味ないなぁと
フィールドのほうが「あえて」立場なんだよ要するに

>>758 の例は struct 作るときに標準的にやっといたほうが
いい処理が含まれてる実装ですなただの

KeyValuePair 使うかどうかはそれ(表現したい対象)が
KeyValuePair の機能しか将来的にも持たないんなら
それでいいんじゃね