Error 1 Inconsistent accessibility: return type is less accessible than method

前端 未结 4 1699
谎友^
谎友^ 2020-12-20 11:12

When I\'m building, VS show error. This is my code:

public Composite buildComposite(ComboBox subs, ComboBox bas)
{
    int count = 0;
    Composite a = new C         


        
相关标签:
4条回答
  • 2020-12-20 11:51

    you are trying to return an instance of class Composite from a public method, but Composite is not public therefore can't be returned as any calling code cannot know anything about the Composite class as it cannot see it.

    Make your Composite class public.

    public class Composite{...}
    

    or make your method which is returning your Composite have the same visibility as your class (probably private):

    private Composite buildComposite(ComboBox subs, ComboBox bas)
    

    Which of these is appropriate will depend on whether you need to call the method (or use the class) from outside your current assembly.

    By default a class is usually as 'hidden' as it can be, so private for classes. Read more about the default visibility here

    0 讨论(0)
  • 2020-12-20 11:53

    Your Composite class is not public. You can't return a non-public type from a public method.

    If you don't specify an accessibility for a non-nested class then internal is used by default. Add public to your Composite class definition:

    public class Composite
    {
        ...
    

    Alternatively, if buildComposite doesn't need to be public (meaning it's only used internally by the form), then you could make the method private as well:

    private Composite buildComposite(ComboBox subs, ComboBox bas)
    {
        ....
    
    0 讨论(0)
  • 2020-12-20 11:57

    Your custom type, Composite, is currently less accessible than your method buildComposite. For other classes to see this public method, they must also have public access to the Composite class/struct.

    0 讨论(0)
  • if Composite was defined in unreachable/unmodifiable code like class Composite, you could try making buildComposite as internal. Like internal Composite buildComposite(ComboBox subs, ComboBox bas). This way it is still more accessible by making the method private.

    0 讨论(0)
提交回复
热议问题