読者です 読者をやめる 読者になる 読者になる

chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

最近C#に手を出したのですが

Javaから来るとわからんことだらけである。次のコードが通らないことにJava屋はびっくりですよ。

using System.Collections.Generic;

public class Test {

	private class InnerClass {
	}

	private List<InnerClass> lists = null;


	Test() {
		this.lists = new System.Collections.Generic.List<InnerClass>();
	}

	static void Main(string[] args) {
		Test t = new Test();
	}

	public List<InnerClass> getLists() {
		return this.lists;
	}

}
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.

Test.cs(19,26): error CS0050: アクセシビリティに一貫性がありません。戻り値の型
        'System.Collections.Generic.List<Test.InnerClass>'
        のアクセシビリティはメソッド 'Test.getLists()'
        よりも低く設定されています。
c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll:
        (以前のエラーに関連するシンボルの位置)

Javaだとコレが通るのに…

import java.util.*;

public class Test {

    private static class InnerClass {
    }

    private List<InnerClass> lists = null;

    Test() {
        this.lists = new ArrayList<InnerClass>();
    }

    public static void main(String[] args) {
        Test test = new Test();
    }

    public List<InnerClass> getLists() {
        return this.lists;
    }

}

コレクションに入れるクラスって公開じゃないとダメなんですかね。