

C#入門者です。

[code]

    public class Sample
    {
    
      public void Hoge(){} 
    
      void Fuga(){} 
    
    }
    
[/code]

上記のコードの`Sample.Hoge()`と`Sample.Fuga()`の違いはなんでしょうか。  
publicやprivateなどがないとき、どのような扱いになるのでしょうか。  
また、どのような場合にこういった書き方が必要になるのでしょうか。


CC BY-SA 3.0
2016-01-13T06:21:15.680
20878
2016-01-13T06:55:07.530
9149
question
c#
C#のclassでスコープが明記されていないメソッドについて


メソッドの場合は省略するとprivateと同じ扱いになります。つまり下記と同じ意味です。

[code]

      private void Fuga(){}
    
[/code]

詳細はMSDNなどが参考になると思います。

  * [アクセス修飾子 (C# プログラミング ガイド)](https://msdn.microsoft.com/ja-jp/library/ms173121.aspx "アクセス修飾子 \(C# プログラミング ガイド\)")
  * [実装の隠蔽 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C](http://ufcpp.net/study/csharp/oo_conceal.html#level "実装の隠蔽 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C")

省略する理由はおそらく様々だと思いますが、例えばUnityの場合はUnityが出力するC#スクリプトの雛形ではすでにprivateを省略されているため、Unityのプロジェクトのスクリプトではprivateを省略する書き方をよく見かける気がします。


CC BY-SA 3.0
2016-01-13T06:38:56.470
20879
2016-01-13T06:38:56.470
3783
20878
answer


`Fuga()` は`private` として扱われます。  
[アクセシビリティ レベル (C# リファレンス)](https://msdn.microsoft.com/ja-
jp/library/ba0a1yw2.aspx)

> メンバー宣言にアクセス修飾子の指定がない場合には、既定のアクセシビリティ(リンク先の表からprivateが既定)が使用されます。

必要というより単に好みの問題かと思います。（いちいち書きたくない、自分の中ではprivateとはっきりしているとか・）


CC BY-SA 3.0
2016-01-13T06:55:07.530
20880
2016-01-13T06:55:07.530
5044
20878
answer