<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>static アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<atom:link href="https://nyanblog2222.com/tag/static/feed/" rel="self" type="application/rss+xml" />
	<link>https://nyanblog2222.com/tag/static/</link>
	<description>ちょっとしたことを調べているよ</description>
	<lastBuildDate>Fri, 27 Aug 2021 11:26:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7</generator>

<image>
	<url>https://nyanblog2222.com/wp-content/uploads/2021/09/cropped-favicon-32x32.png</url>
	<title>static アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<link>https://nyanblog2222.com/tag/static/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>【C#】const、readonly、static readonlyの使い方・違いについて</title>
		<link>https://nyanblog2222.com/programming/c-sharp/1279/</link>
					<comments>https://nyanblog2222.com/programming/c-sharp/1279/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Mon, 15 Jun 2020 09:00:00 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[readonly]]></category>
		<category><![CDATA[static]]></category>
		<category><![CDATA[定数]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1279</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/96.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/96.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />こんにちは。今回はC#の定数の定義について、ご紹介していきます。 const、readonly、static readonlyについて、目にしたことはあると思います。では、それぞれの違いや使い方はご存じでしょうか。 特に [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/c-sharp/1279/">【C#】const、readonly、static readonlyの使い方・違いについて</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/96.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/96.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。今回はC#の定数の定義について、ご紹介していきます。</p>



<p><strong><span style="color:#b78d4a" class="has-inline-color">const、readonly、static readonly</span></strong>について、目にしたことはあると思います。<br>では、それぞれの違いや使い方はご存じでしょうか。</p>



<p>特に今まで曖昧だった方向けに本記事をご覧になっていただければと思います。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">constについて</a><ol><li><a href="#toc2" tabindex="0">使用例</a></li></ol></li><li><a href="#toc3" tabindex="0">readonlyについて</a><ol><li><a href="#toc4" tabindex="0">使用例</a></li><li><a href="#toc5" tabindex="0">補足</a></li></ol></li><li><a href="#toc6" tabindex="0">static readonlyについて</a><ol><li><a href="#toc7" tabindex="0">使用例</a></li></ol></li><li><a href="#toc8" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">constについて</span></h2>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">コンパイル時に決定する定数</span></strong></li><li>自動的にでstatic扱い。<br>生成したインスタンスから取得できない。</li><li>宣言時のみ初期化可能</li><li><strong><span style="color:#b78d4a" class="has-inline-color">文字列以外の参照型での初期化はできない。</span></strong><br>（生成したインスタンスは設定不可）</li><li>固定の値を埋め込むため、readonlyより処理速度が速い<br>ただし、ファイルサイズは大きくなる</li><li><strong><span style="color:#b78d4a" class="has-inline-color">デフォルト引数やswitchで使用可能</span></strong></li><li>publicで使用すると<strong><a class="link" href="https://nyanblog2222.com/c-sharp/1299/#const" target="_blank">constのバージョン管理問題</a></strong>があるため、privateでの使用を推奨</li></ul>



<h3 class="wp-block-heading"><span id="toc2">使用例</span></h3>



<pre class="wp-block-code cs"><code>/// &lt;summary>最大数&lt;/summary>
private const int MAX_COUNT = 5;
/// &lt;summary>みかん&lt;/summary>
private const string MIKAN = "みかん";

// 例：for文の条件式で使用
for (int i = 1; i &lt; MAX_COUNT; i++)
{
 // ...処理
}

// switch文の判定で使用
switch (fruits)
{
  case MIKAN:
    return 15;
    break;
  // ...処理
}</code></pre>



<h2 class="wp-block-heading"><span id="toc3">readonlyについて</span></h2>



<ul class="wp-block-list"><li><strong><span style="color:#b78d4a" class="has-inline-color">実行時に決定する</span></strong>読み取り専用変数</li><li><strong><span style="color:#b78d4a" class="has-inline-color">宣言、コンストラクタのどちらかで初期化</span></strong>が可能。<br>（コンストラクタ内で変更も可）</li><li>デフォルト引数やswitchで使用不可</li><li>生成したインスタンスを含め<strong><span style="color:#b78d4a" class="has-inline-color">あらゆる値型や参照型を設定することが可能</span></strong></li><li>constと比べ、ファイルサイズを下げることができるが、処理速度が遅い<br>（どちらも僅かなのでそこまで気にする必要はないと思います。）</li></ul>



<p>readonlyはコンストラクタ内で初期化、変更ができるのが大きな特徴となります。</p>



<h3 class="wp-block-heading"><span id="toc4">使用例</span></h3>



<pre class="wp-block-code cs"><code>class Program
{
    /// &lt;summary>
    /// メイン関数
    /// &lt;/summary>
    /// &lt;param name="args">引数&lt;/param>
    static void Main(string&#91;] args)
    {
        Class1 class1 = new Class1("読み取り専用");

        // コンソール画面に「読み取り専用」と出力
        Console.WriteLine(class1.YOMITORI_SENYOU);
    }
}

class Class1
{
    public readonly string YOMITORI_SENYOU;

    /// &lt;summary>
    /// コンストラクタ
    /// &lt;/summary>
    public Class1(string value)
    {
        YOMITORI_SENYOU = value;
    }
}</code></pre>



<h3 class="wp-block-heading"><span id="toc5">補足</span></h3>



<p>読み取り専用のインスタンス変数という意味では、readonlyを使わず<span style="font-weight: bold; color: rgb(183, 141, 74);" class="has-inline-color">「setアクセサなし」の「getアクセサ」のみのプロパティを作成</span>しても、良いと思います。</p>



<pre class="wp-block-code cs"><code>// 例：setは記述されていないため、読み取り専用になります。
public string Fruits
{
    get { return "みかん"; }
}</code></pre>



<h2 class="wp-block-heading"><span id="toc6">static readonlyについて</span></h2>



<ul class="wp-block-list"><li>constと異なり、<strong><span style="color:#b78d4a" class="has-inline-color">バージョン管理問題が起こらない</span></strong>。</li><li><strong><span style="color:#b78d4a" class="has-inline-color">生成したインスタンス</span></strong>や<strong><span style="color:#b78d4a" class="has-inline-color">コンパイル時に計算できない値</span></strong>でも設定することができます。</li></ul>



<p>他はconstと同様の機能を持っています。</p>



<h3 class="wp-block-heading"><span id="toc7">使用例</span></h3>



<pre class="wp-block-code cs"><code>/// &lt;summary>テーブル一覧&lt;/summary>
public static readonly string&#91;] TABLE_LIST = { "table1", "table2", "table3" };

foreach (string table in TABLE_LIST)
{
    // ..処理
}</code></pre>



<h2 class="wp-block-heading"><span id="toc8">まとめ</span></h2>



<p>いかがでしたでしょうか。</p>



<p>本記事ではconstよりも<strong><span style="color:#b78d4a" class="has-inline-color">static readonly</span></strong>がおすすめさせていただきます。<br>また、読み取り専用のインスタンスとして、<strong><span style="color:#b78d4a" class="has-inline-color">readonly</span></strong>や<strong><span style="color:#b78d4a" class="has-inline-color">getアクセサのみのプロパティ</span></strong>で実行できます。</p>



<p>特にconstとstatic readonlyについては、バージョン管理問題があるため、さまざまな書籍で<strong><span style="color:#b78d4a" class="has-inline-color">static readonly</span></strong>を推奨しています。<br>※ 「実戦で役立つ　C#プログラミングのイディオム／定石＆パターン」etc.</p>



<p>必ずこの記述でないといけない。ということはありませんが、少なくとも<strong><span style="color:#b78d4a" class="has-inline-color">自分やプロジェクトチームではルールを決めて実装することが大事</span></strong>だと思います。</p>



<p>本記事をご覧いただき、ありがとうございました。</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/c-sharp/1279/">【C#】const、readonly、static readonlyの使い方・違いについて</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/c-sharp/1279/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
