C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
How can you use the partial modifier on a C# class declaration? With partial, you can physically separate a class into multiple files. This is often done by code generators.
Example. With normal C# classes, you cannot declare a class in two separate files in the same project. But with the partial modifier, you can. This is useful if one file is commonly edited and the other is machine-generated or rarely edited.
C# program that uses partial class class Program { static void Main() { A.A1(); A.A2(); } } Contents of file A1.cs: C# using System; partial class A { public static void A1() { Console.WriteLine("A1"); } } Contents of file A2.cs: C# using System; partial class A { public static void A2() { Console.WriteLine("A2"); } } Output A1 A2
Partial is required here. If you remove the partial modifier, you will get an error containing this text: [The namespace '<global namespace>' already contains a definition for 'A'].
Tip: To fix this, you can either use the partial keyword, or change one of the class names.
Compiler. How does the C# compiler deal with partial classes? If you disassemble the above program, you will see that the files A1.cs and A2.cs are eliminated. You will find that the class A is present.
So: Class A will contain the methods A1 and A2 in the same code block. The two classes were merged into one.
Tip: Partial classes are precisely equivalent to a single class with all the members.
Compiled result of A1.cs and A2.cs: C# internal class A { // Methods public static void A1() { Console.WriteLine("A1"); } public static void A2() { Console.WriteLine("A2"); } }
Summary. Partial classes can simplify certain C# programming situations. They are often used in Visual Studio when creating Windows Forms programs. The machine-generated C# code is separate.
Note: Partial classes are sometimes used to separate commonly-edited code from rarely-edited code.
And: This can reduce confusion and the possibility that code that isn't supposed to be edited is changed.