<?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>const アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<atom:link href="https://nyanblog2222.com/tag/const/feed/" rel="self" type="application/rss+xml" />
	<link>https://nyanblog2222.com/tag/const/</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.1</generator>

<image>
	<url>https://nyanblog2222.com/wp-content/uploads/2021/09/cropped-favicon-32x32.png</url>
	<title>const アーカイブ - nyanblog ~にゃんぶろぐ~</title>
	<link>https://nyanblog2222.com/tag/const/</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>【JavaScript】変数、型の違い【var let const】</title>
		<link>https://nyanblog2222.com/programming/javascript/1378/</link>
					<comments>https://nyanblog2222.com/programming/javascript/1378/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Wed, 11 Aug 2021 21:21:06 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[let]]></category>
		<category><![CDATA[var]]></category>
		<category><![CDATA[グローバル変数]]></category>
		<category><![CDATA[ローカル変数]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1378</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/83.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/83.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />こんにちは。 変数の宣言でvar、let、constそれぞれどの状況で使用していますか？ 私は特にvarとletについて違いが良く分からなかったので、この機会に調べてまとめてみました。 良かったら参考にしてください！ 目 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1378/">【JavaScript】変数、型の違い【var let const】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/83.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/83.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/83-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。</p>



<p>変数の宣言でvar、let、constそれぞれどの状況で使用していますか？</p>



<p>私は特にvarとletについて違いが良く分からなかったので、この機会に調べてまとめてみました。</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">ローカルスコープとグローバルスコープ</a></li><li><a href="#toc2" tabindex="0">変数宣言キーワード</a><ol><li><a href="#toc3" tabindex="0">varについて</a></li><li><a href="#toc4" tabindex="0">letについて</a></li><li><a href="#toc5" tabindex="0">constについて</a></li></ol></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ローカルスコープとグローバルスコープ</span></h2>



<p>まずは、<strong><span style="color: #b78d4a;" class="has-inline-color">ローカルスコープ</span></strong>と<strong><span style="color: #b78d4a;" class="has-inline-color">グローバルスコープ</span></strong>についてです。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">スコープ</span></strong>とは、変数が参照したり変更できたりと<span class="marker-yellow">使用できる有効範囲</span>を指します。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">ローカルスコープ</span></strong>はある<span class="marker-yellow">特定の範囲内でのみ有効となるスコープ</span>です。<br>特定の範囲とは、これから出てくる関数やブロックなど括られた範囲を指します。</p>



<p><strong><span style="color: #b78d4a;" class="has-inline-color">グローバルスコープ</span></strong>は名の通り<span class="marker-yellow">どこからでも使用できる有効範囲を持つスコープ</span>です。</p>



<p>どこでも使用することが可能なので、とても便利であるように感じますが<br>意図しない箇所で上書きしてしまったり、利用してしまったりすることで<br>不具合の原因となってしまいます。</p>



<p>そのため、<span style="color: #000000;"><span class="has-inline-color"><span class="marker-yellow">できる限り変数のスコープは小さくする</span></span></span>ことが<br>読みやすいコードにつながると言われています。</p>



<p>本記事では特にvarとletに関して<span style="color: #000000;"><span class="has-inline-color"><span class="marker-yellow">スコープを意識して使い分けていくこと</span></span></span>をおすすめしています！</p>



<h2 class="wp-block-heading"><span id="toc2">変数宣言キーワード</span></h2>



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



<dl class="wp-block-sbd-definition-list sbd-inner-block-init sbd-list-border">
<dt class="wp-block-sbd-definition-list-dt is-style-sbd-dt-pink">特徴</dt>



<dd class="wp-block-sbd-definition-list-dd">・ES2015以前より使用できる変数宣言キーワード<br>・ スコープは<strong><span style="color: #b78d4a;" class="has-inline-color">関数内部</span></strong><br>・ 関数内のどこで宣言しても、<strong><span style="color: #b78d4a;" class="has-inline-color">先頭で定義した扱い</span></strong>となる<br>・ ifやfor文内で宣言した変数でも、同じ関数内であれば使用できる</dd>
</dl>



<pre class="wp-block-code javascript"><code>// 例
function Sample() {
    for(let i=1;i&lt;=3;i++){
        console.log(i)
    }
    
    // ブロック外なので、アクセスできずエラー
    console.log(i)
}</code></pre>



<h3 class="wp-block-heading"><span id="toc4">letについて</span></h3>



<p>varとの主な違いは<span class="marker-yellow">スコープの範囲</span>です。</p>



<p>varではif文やfor文のようにブロック内で宣言した変数でも、<br>同じ関数内であれば使用することができますが、<br><span class="marker-yellow">letではブロック内で宣言した変数はブロックの範囲を超えると使用することができません</span>。</p>



<dl class="wp-block-sbd-definition-list sbd-inner-block-init sbd-list-border">
<dt class="wp-block-sbd-definition-list-dt is-style-sbd-dt-pink">特徴</dt>



<dd class="wp-block-sbd-definition-list-dd">・<span style="color: initial;">ES2016以降より使用可能（IE9等、少し古いバージョンのブラウザだと動かない場合がある）</span><br>・<span style="color: initial;">スコープは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">関数内部</span></strong><span style="color: initial;">、もしくは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">ブロック内部</span></strong><br><span style="color: initial;"></span>・<span style="color: initial;">varと比べて、よりスコープを限定することができる</span></dd>
</dl>



<pre class="wp-block-code javascript"><code>// 例
function Sample() {
    var sample1 = 1;
    // var i;

    // 再代入可能
    sample1 = 3;

    for(var i=1;i&lt;=3;i++){
        console.log(i)
    }
    
    // 同じ関数内なので、アクセスできる
    console.log(i)
    
    console.log(gloval_hensu)
}

// 関数外なので参照できず、エラー
console.log(i)</code></pre>



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



<p>constはこの3つの中だと、 一番特徴が分かりやすいです。<br>それは<span class="marker-yellow">再代入（変更）できない</span>ため定数として扱われます。</p>



<dl class="wp-block-sbd-definition-list sbd-inner-block-init sbd-list-border">
<dt class="wp-block-sbd-definition-list-dt is-style-sbd-dt-pink">特徴</dt>



<dd class="wp-block-sbd-definition-list-dd">・<span style="color: initial;">ES2016以降より使用可能（IE9等、少し古いバージョンのブラウザだと動かない場合がある）</span><br>・<span style="color: initial;">スコープは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">関数内部</span></strong><span style="color: initial;">、もしくは</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">ブロック内部</span></strong><span style="color: initial;">再代入ができない（定数扱いとなる）</span><br>・<span style="color: initial;">宣言のみはできず</span><strong style="color: initial;"><span style="color: #b78d4a;" class="has-inline-color">必ず値を代入する必要</span></strong><span style="color: initial;">がある。</span></dd>
</dl>



<p>定数とは、一度宣言されると値が固定され変更できない値を指します。</p>



<pre class="wp-block-code javascript"><code>// 例
// 宣言時に値を代入していないので、エラー
const sample1;

const sample2 = "test2";
const sample3 = "test3";

// 代入できないので、エラー
sample3 = "sample3";

if(sample2 === "test2"){
    const sample4 = "test4";
}

// sample4はブロック内で宣言されているため、
// ブロックの外で使用し、スコープからはみ出ているのでエラー
console.log(sample4);</code></pre>



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



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



<p>ちょっとしたことなのですが、<br>忘れやすかったりするので良かったら時々見に来てください♪</p>



<p>ちなみに、JavaScriptは変数宣言キーワード（var, let, const）を使用しなくても宣言することができます。</p>



<p><span class="marker-under-red">キーワードを使用することで有効範囲が変わってくる</span>ので、<br>予期せぬ動きをさせないためにも、使用した方が良いですね！</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/javascript/1378/">【JavaScript】変数、型の違い【var let const】</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/javascript/1378/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【C#】constを使用する時の注意点</title>
		<link>https://nyanblog2222.com/programming/c-sharp/1299/</link>
					<comments>https://nyanblog2222.com/programming/c-sharp/1299/#respond</comments>
		
		<dc:creator><![CDATA[nyan2222]]></dc:creator>
		<pubDate>Tue, 16 Jun 2020 09:05:00 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[enum]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[定数]]></category>
		<guid isPermaLink="false">https://nyanblog2222.com/?p=1299</guid>

					<description><![CDATA[<p><img src="https://nyanblog2222.com/wp-content/uploads/2022/11/97.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/97.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/97-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/97-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/97-768x402.png 768w" sizes="(max-width: 1280px) 100vw, 1280px" />こんにちは。前回は「const、readonly、static readonlyの使い方・違いについて」説明していきました。詳しくは、こちらの記事をご覧ください。 今回は前回入りきらなかった「const」を使用する時の注 [&#8230;]</p>
<p>投稿 <a href="https://nyanblog2222.com/programming/c-sharp/1299/">【C#】constを使用する時の注意点</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<img src="https://nyanblog2222.com/wp-content/uploads/2022/11/97.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/97.png 1280w, https://nyanblog2222.com/wp-content/uploads/2022/11/97-300x157.png 300w, https://nyanblog2222.com/wp-content/uploads/2022/11/97-1024x536.png 1024w, https://nyanblog2222.com/wp-content/uploads/2022/11/97-768x402.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" />
<p>こんにちは。前回は「const、readonly、static readonlyの使い方・違いについて」説明していきました。<br>詳しくは、こちらの記事をご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-nyanblog wp-block-embed-nyanblog"><div class="wp-block-embed__wrapper">

<a href="https://nyanblog2222.com/c-sharp/1279/" title="【C#】const、readonly、static readonlyの使い方・違いについて" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img decoding="async" src="https://nyanblog2222.com/wp-content/uploads/2022/11/96-160x90.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://nyanblog2222.com/wp-content/uploads/2022/11/96-160x90.png 160w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-120x68.png 120w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-320x180.png 320w, https://nyanblog2222.com/wp-content/uploads/2022/11/96-376x212.png 376w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【C#】const、readonly、static readonlyの使い方・違いについて</div><div class="blogcard-snippet internal-blogcard-snippet">今回はC#の定数の定義について、ご紹介していきます。const、readonly、static readonlyについて、目にしたことはあると思います。では、それぞれの違いや使い方はご存じでしょうか。const：コンパイル時に決定する定数。readonly：読み取り専用のインスタンス。static r...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://nyanblog2222.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">nyanblog2222.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.06.15</div></div></div></div></a>
</div></figure>



<p><br>今回は前回入りきらなかった「const」を使用する時の注意点を解説していきます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">constのバージョン管理問題  </a></li><li><a href="#toc2" tabindex="0">列挙型の代わりに構造体のconstを使わない</a></li><li><a href="#toc3" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">constのバージョン管理問題  </span></h2>



<p>constで宣言した定数は<strong><span style="color:#b78d4a" class="has-inline-color">アクセス修飾子をpublicにすべきでない</span></strong>。と言われています。<br>なぜかというと、const定数はコンパイル時点で値が決定します。<br>例えば、クラスライブラリのMyClassには、constの定数”MAX_COUNT”が宣言されています。</p>



<pre class="wp-block-code cs"><code><strong>public</strong> <strong>class</strong> <strong>MyClass</strong> {
  <strong>public</strong> <strong>const</strong> <strong>int</strong> MAX_COUNT = 25;
}</code></pre>



<p>Program.exeに含まれるProcessクラスでは、ライブラリを読み込んでMyClass.MAX_COUNTを使います。</p>



<pre class="wp-block-code cs"><code><strong>public</strong> <strong>class</strong> <strong>Process</strong> {
  <strong>for</strong>(<strong>int</strong> i = 0; i &lt; MyClass.MAX_COUNT; i++) {
    …
  }
}</code></pre>



<p>仕様が変わりMAX_COUNTが30になったので、constの定数を変更しました。</p>



<pre class="wp-block-code cs"><code>public class MyClass {
  public const int MAX_COUNT = 30;
}</code></pre>



<p>このとき、クラスライブラリだけコンパイルして差し替えた場合、Program.exeで使用するときはMyClass.MAX_COUNTの値はどうなるでしょうか？</p>



<p>…正解は<strong><span class="has-inline-color has-pale-pink-color">MyClass.MAX_COUNTの値は25</span></strong>になります。</p>



<p>理由はProgram.exeで使用しているMyClass.MAX_COUNTの値は<strong><span style="color:#b78d4a" class="has-inline-color">Program.exeをコンパイルするときに値が決まっているから</span></strong>です。</p>



<p>これをバージョンアップするときに起こる問題として、<strong><span style="color:#b78d4a" class="has-inline-color">constのバージョン管理問題</span></strong>や<strong><span style="color:#b78d4a" class="has-inline-color">constのバージョニング問題</span></strong>と言います。</p>



<h2 class="wp-block-heading"><span id="toc2">列挙型の代わりに構造体のconstを使わない</span></h2>



<p>構造体のconstで、列挙型のような使い方をすると、予期せぬ不具合を生み出すことがあります。</p>



<p>こちらは構造体での使用例です。<br>12行目でstatusに&#8221;5&#8243;を設定していますが、何も問題なく<strong><span style="color:#b78d4a" class="has-inline-color">ビルドが通ります</span></strong>。</p>



<p>しかし、開発者はStatus構造体内の定数を設定したいはずなので、statusに&#8221;5&#8243;を代入してしまうことは以降の処理で不具合を起こしかねません。</p>



<pre class="wp-block-code cs"><code>struct Status
{
    public const int INIT = 0;
    public const int FAILED = 1;
    public const int SUCCESS = 2;
    public const int FINAL = 3;
}

var status = Status.INIT;

// Statusには存在しない値を設定できる
status = 5;</code></pre>



<p>続いて、列挙型での使用例です。<br>12行目のように列挙型での宣言後、<strong><span style="color:#b78d4a" class="has-inline-color">Statusに存在しない値を設定すると、ビルドエラー</span></strong>になります。</p>



<pre class="wp-block-code cs"><code>enum Status
{
    INIT = 0;
    FAILED = 1;
    SUCCESS = 2;
    FINAL = 3;
}

var status = Status.INIT;

// Statusに存在しない値を設定すると、ビルドエラーになる
status = 5;</code></pre>



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



<p>今回は前回の定数の解説に引き続き、「const」に焦点を当てて注意点を解説していきました。</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/1299/">【C#】constを使用する時の注意点</a> は <a href="https://nyanblog2222.com">nyanblog ~にゃんぶろぐ~</a> に最初に表示されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nyanblog2222.com/programming/c-sharp/1299/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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" loading="lazy" 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="auto, (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" loading="lazy" 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="auto, (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-6" checked><label class="toc-title" for="toc-checkbox-6">目次</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>
