私は ブログで を読んだ
class studentInfo(string StudentFName, string StudentMName, string StudentLName);
しかし、私がそれを試したとき、私はこれらのエラーを受け取ります
CS0116名前空間には、フィールドやメソッドなどのメンバーを直接含めることはできません
CS1022タイプまたは名前空間の定義、またはファイルの終わりが必要です
CS1514 {予想
これはどのように機能するはずですか?
レコードタイプは(まだ)C#に実装されていません。公式のGitHubリポジトリで提案を参照してください。
https://github.com/dotnet/csharplang/blob/master/proposals/records.md
[物事の現在の状態を反映するように書き換えられました]
他の回答に追加するために、C#の機能が最近C#に表示されるようにペンシルインされる時期を簡単に追跡できます。たとえば、 Champion "Records" の問題は、レコードに関する思考の状態を示します。レコードは現在C#9でスケジュールされていますが、その機能は以前C#6、C#7、C#8でも宣伝されていたため、あくまでも野望です。
現在利用可能なC#7機能を使用してコンストラクターを実装するレコードのような怠laな方法を探している場合は、方法があります。
class Lazystructor
{
int a;
float b;
WebClient c;
public Lazystructor(int a, float b, WebClient c)
=> (this.a, this.b, this.c) = (a, b, c);
}
ValueTupleの作成と抽出のプロセスであるため、パフォーマンスに敏感なシナリオでこれを使用している場合、少し考慮します。
C#7.0より前は、次のようなクラスを宣言します。
レコードタイプはまだC#7.0に実装されていませんが(他の回答で詳しく説明しています)、canread-only auto-properties を使用してコードを短縮します。 C#6.0:
public class studentInfo
{
public string StudentFName { get; }
public string StudentMName { get; }
public string StudentLName { get; }
public studentInfo(string strFN, string strMN, string strLN)
{
StudentFName = strFN;
StudentMName = strMN;
StudentLName = strLN;
}
}