Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the public access modifier mean in C#?
The <strong>public</strong> modifier means the member or class is accessible from anywhere in the program or other programs that reference it. It's like a door open to everyone.
Click to reveal answer
beginner
What is the purpose of the private access modifier?
The <strong>private</strong> modifier restricts access to the member or class so it can only be used inside the same class. Think of it as a secret only the class knows.
Click to reveal answer
intermediate
Explain the internal access modifier in C#.
The internal modifier allows access only within the same assembly (project). It's like a private room shared only with people in the same building.
Click to reveal answer
beginner
Which access modifier is the default for class members if none is specified?
If no access modifier is specified for class members, the default is <strong>private</strong>. So, members are hidden unless you say otherwise.
Click to reveal answer
beginner
Can a <strong>private</strong> member be accessed from another class in the same assembly?
No, <strong>private</strong> members are only accessible inside their own class, even if another class is in the same assembly.
Click to reveal answer
Which access modifier allows a class member to be accessed from any other code in the same assembly or another assembly?
Apublic
Bprivate
Cinternal
Dprotected
✗ Incorrect
The public modifier allows access from anywhere, including other assemblies.
What is the default access level for members of a class if no modifier is specified?
Aprotected
Bpublic
Cinternal
Dprivate
✗ Incorrect
Class members are private by default if no access modifier is given.
Which access modifier restricts access to the same assembly only?
Ainternal
Bpublic
Cprivate
Dprotected internal
✗ Incorrect
internal limits access to the same assembly.
Can a private member be accessed from a derived class?
AYes, always
BNo, never
CYes, if in the same assembly
DOnly if marked protected
✗ Incorrect
private members are not accessible outside their own class, even in derived classes.
Which modifier would you use to allow access only within the same class and derived classes?
Apublic
Bprivate
Cprotected
Dinternal
✗ Incorrect
protected allows access within the class and its subclasses.
Describe the differences between public, private, and internal access modifiers in C#.
Think about who can open the door to the member or class.
You got /3 concepts.
Explain why you might choose to use private instead of public for a class member.
Consider keeping secrets safe inside a class.
You got /3 concepts.
Practice
(1/5)
1.
Which access modifier allows a class member to be accessed from any other code in the same project or assembly?
easy
A. internal
B. private
C. public
D. protected
Solution
Step 1: Understand the meaning of internal
The internal modifier allows access within the same assembly or project but not outside it.
Step 2: Compare with other modifiers
private restricts access to the same class only, public allows access from anywhere, and protected allows access in derived classes.
Final Answer:
internal -> Option A
Quick Check:
Access inside project = internal [OK]
Hint: Internal means accessible only within the same project [OK]
Common Mistakes:
Confusing internal with public
Thinking private allows access outside class
Mixing protected with internal
2.
Which of the following is the correct way to declare a private integer field named count in a class?
?
easy
A. internal count int;
B. int private count;
C. public int count;
D. private int count;
Solution
Step 1: Recall correct syntax for access modifiers
The access modifier comes first, then the type, then the variable name.
Step 2: Check each option's order and keywords
private int count; follows correct order: private int count;. Others have incorrect order or missing type.
Final Answer:
private int count; -> Option D
Quick Check:
Access modifier + type + name [OK]
Hint: Access modifier always comes before type in declaration [OK]
Common Mistakes:
Placing access modifier after type
Omitting the type
Using invalid order of keywords
3.
Consider the following code snippet:
class MyClass {
private int secret = 42;
public int GetSecret() {
return secret;
}
}
MyClass obj = new MyClass();
Console.WriteLine(obj.secret);
What will happen when this code runs?
medium
A. Runtime error: NullReferenceException
B. It prints 42
C. Compilation error: 'secret' is inaccessible due to its protection level
D. It prints 0
Solution
Step 1: Identify access modifier of 'secret'
The field secret is declared private, so it cannot be accessed outside MyClass.
Step 2: Check code accessing 'secret'
The code tries to access obj.secret outside the class, which is not allowed and causes a compile-time error.
Final Answer:
Compilation error: 'secret' is inaccessible due to its protection level -> Option C
Quick Check:
Private fields cannot be accessed outside class [OK]
Hint: Private members cannot be accessed from outside their class [OK]
Common Mistakes:
Assuming private fields are accessible outside class
Confusing runtime errors with compile errors
Thinking public methods expose private fields directly
4.
Given this code snippet, identify the error and fix it:
class Sample {
internal int value;
}
class Test {
void Show() {
Sample s = new Sample();
Console.WriteLine(s.value);
}
}
Assuming these classes are in different projects, what is the problem?
medium
A. No error, code runs fine
B. Error: 'value' is inaccessible due to protection level; fix by changing 'internal' to 'public'
C. Error: 'value' must be private; fix by changing 'internal' to 'private'
D. Error: 'value' must be static; fix by adding 'static' keyword
internal allows access only within the same project or assembly.
Step 2: Check class locations
Since Sample and Test are in different projects, Test cannot access internal members of Sample.
Step 3: Fix the access level
Changing value to public allows access from other projects.
Final Answer:
Error: 'value' is inaccessible due to protection level; fix by changing 'internal' to 'public' -> Option B
Quick Check:
Internal = same project only; public = accessible everywhere [OK]
Hint: Internal limits access to same project; use public for cross-project [OK]
Common Mistakes:
Assuming internal allows cross-project access
Changing internal to private incorrectly
Confusing static with access modifiers
5.
You have a class library project with a class Helper that has a method Calculate() marked as internal. You want to allow another project in the same solution to use Calculate() without making it public. What is the best way to achieve this?
hard
A. Use the InternalsVisibleTo attribute to expose internal members to the other project
B. Change the method to public
C. Change the method to private and create a public wrapper
D. Move the method to the other project
Solution
Step 1: Understand internal and project boundaries
internal restricts access to the same assembly, so other projects cannot access it by default.
Step 2: Use InternalsVisibleTo attribute
This attribute allows you to specify friend assemblies that can access internal members without making them public.
Step 3: Evaluate other options
Changing to public exposes to all, private hides too much, moving method is impractical.
Final Answer:
Use the InternalsVisibleTo attribute to expose internal members to the other project -> Option A
Quick Check:
InternalsVisibleTo grants internal access to specific projects [OK]
Hint: Use InternalsVisibleTo to share internal members across projects [OK]