| C# | Java |
| 1. C# uses Common Language Runtime (CLR) | 1. Java uses Java Runtime Environment (JRE) |
| 2. C# supports the struct data type | 2. Java doesn't supports struct data type |
| 3. C# supports operator overloading. | 3. Java doesn't supports operator overloading. |
| 4. C# type-safety is unsafe | 4. Java type-safety is safe. |
| 5. C# supports goto statement. | 5. Java doesn't supports goto statement. |
| 6. In C#, It uses static final to declare a class constant | 6. In Java, It uses const to declare a class constant |
| 7. In C#, parameters are passed by reference | 7. In Java, parameters are passed by value |
| 8. C# supports only unchecked exception | 8. Java supports checked and unchecked exception |