Access Modifiers Interview Questions C#.NET

Access Modifiers Interview Questions and Answers C#.NET

In this article, I am going to discuss most frequently asked Access Modifiers Interview Questions and Answers on C#.NET.

What are Access Modifiers in C#? 

In C# there are 5 different types of Access Modifiers.

Public: The public type or member can be accessed by any other code in the same assembly or another assembly that references it.

Private: The type or member can only be accessed by code in the same class or struct.

Protected: The type or member can only be accessed by code in the same class or struct, or in a derived class.

Internal: The type or member can be accessed by any code in the same assembly, but not from another assembly.

Protected Internal: The type or member can be accessed by any code in the same assembly, or by any derived class in another assembly.

What are Access Modifiers used for?

Access Modifiers are used to control the accessibility of types and members within the types.

Can we use all access modifiers for all types? 

No, not all access modifiers can be used by all types or members in all contexts, and in some cases, the accessibility of a type member is constrained by the accessibility of its containing type.

Can derived classes have greater accessibility than their base types?

No, Derived classes cannot have greater accessibility than their base types. For example, the following code is illegal.

internal class InternalBaseClass
{
    public void Print()
    {
        Console.WriteLine("I am a Base Class Method");
    }
}
public class PublicDerivedClass : InternalBaseClass
{
    public static void Main()
    {
        Console.WriteLine("I am a Public Derived Class Method");
    }
}

When we compile the above code an error will be generated stating “Inconsistent accessibility: base class InternalBaseClass is less accessible than class PublicDerivedClass”. To make this simple, you cannot have a public class B that derives from an internal class A. If this were allowed, it would have the effect of making a public, because all protected or internal members of A are accessible from the derived class.

Is the following code legal?
private class Test
{
    public static void Main()
    {
    }
}

No, a compile-time error will be generated stating Namespace elements cannot be explicitly declared as private, protected, or protected internal

Can you declare struct members as protected? 

No, struct members cannot be declared protected. This is because structs do not support inheritance.

Can the accessibility of a type member be greater than the accessibility of its containing type?

No, the accessibility of a type member can never be greater than the accessibility of its containing type. For example, a public method declared in an internal class has only internal accessibility.

Can destructors have access modifiers? 

No, destructors cannot have access modifiers.

What does protected internal access modifier mean?

The protected internal access means protected OR internal, not protected AND internal. In simple terms, a protected internal member is accessible from any class in the same assembly, including derived classes. To limit access to only derived classes in the same assembly, declare the class itself internal, and declare its members as protected.

What is the default access modifier for a class, struct, and an interface declared directly with a namespace? 

internal

Will the following code compile?

interface IInterface
{
    public void Save();
}

No, you cannot specify access modifier for an interface member. Interface members are always public.

Can you specify an access modifier for an enumeration? 

Enumeration members are always public, and no access modifiers can be specified.

SUMMARY

In this article, I try to explain most frequently asked Access Modifiers Interview Questions and Answers on C#.NET. I hope this article will help you with your need. I would like to have your feedback. Please post your feedback, question, or comments about this article.

Follow Us

Leave a Reply

Your email address will not be published. Required fields are marked *