質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

解決済

C#のメッセージ「CA2211:非定数フィールドは表示されません」について

mmmisaki
mmmisaki

総合スコア34

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1回答

0リアクション

0クリップ

326閲覧

投稿2022/09/22 05:53

編集2022/09/22 06:09

以下のようなソースコードを書いた場合
public static int Test = 3;の箇所で「CA2211:非定数フィールドは表示されません」と表示されます。

ドキュメントを読むと「読み取り専用でもない静的フィールドは、スレッド セーフではありません。」とあるのでメッセージの意味は理解できました。

しかし以下のようにコードを修正するとメッセージが抑制されます。get; set;があるのとないのでなにが違うのでしょうか?

public static int Test { get; set; } = 3;

環境はwindows10 21H2,visual studio 2022, .NET6.0です。

ソースコード

c#

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //Class1.cs namespace ConsoleApp1 { public static class Class1 { public static int Test = 3; } }

c#

//Program.cs namespace ConsoleApp1 { class Program { static void Main() { Console.WriteLine(Class1.Test); Class1.Test = 1; Console.WriteLine(Class1.Test); } } }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

SurferOnWww

2022/09/22 06:01

開発環境を書きませんか? OS, Visual Studio のバージョン、.NET Framework or .NET Core/.NET どっちかとそのバージョンなど。 エラーメッセージは翻訳がアレです。英文では "Non-constant fields should not be visible" です。それで理解が変わってきませんか?
mmmisaki

2022/09/22 06:18 編集

開発環境を追記いたしました。 なるほど、get; set;でプロパティ明記することで参照を制限するのを忘れているのではなく、他から参照できるようにしたいというのが伝わるから抑制されたという感じでしょうか?
Zuishin

2022/09/22 06:43 編集

「定数でないフィールドは公開すべきではない」という意味です。 フィールドは public ではなく protected や private にし、公開するならフィールドではなくプロパティにしろという警告です。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。