Ich habe bisher hauptsächlich an Java gearbeitet, aber ich habe mich für C # entschieden, das ich selten angesprochen habe, also habe ich studiert. Es gibt einige Ähnlichkeiten, aber es gibt Unterschiede in den Ideen und subtile Unterschiede beim Schreiben, also dachte ich, dass "wie soll ich das schreiben?" Auf jeden Fall auftreten wird, also habe ich die Stellen ausgewählt, von denen ich denke, dass ich sie oft verwenden werde, und Spickzettel Ich habe versucht, als zusammenzufassen. Ich werde die Details eins nach dem anderen kennen.
Java Die Art zu telefonieren ist anders.
import java.util.ArrayList;
C#
using System.Collections.Generic;
Die Erklärung ist anders. Seien Sie auch vorsichtig bei der Benennung, da die Idee anders ist.
Java
package StudyPackage.com.anyplus
C#
namespace StudyPackage
//Es gibt keine Domain, weil die Idee anders ist
Es gibt "interne" und "geschützte interne", die Java nicht hat. Beachten Sie auch, dass selbst mit demselben Modifikator der zugängliche Bereich je nach den unterschiedlichen Ideen unterschiedlich ist.
Qualifikation | Java | C# |
---|---|---|
public | Von überall zugänglich | Von überall zugänglich |
protected | Zugriff über dasselbe Paket oder abgeleitete Klassen | Zugriff von abgeleiteten Klassen |
internal | nicht existieren | Gleiche Montage(DLL)Innerhalb zugänglich |
protected internal | nicht existieren | Gleiche Montage(DLL)Nur innerhalb oder von Typen zugänglich, die von der gespeicherten Klasse abgeleitet sind |
private | Nur innerhalb derselben Klasse zugänglich | Nur innerhalb derselben Klasse zugänglich |
nicht spezifiziert (default) |
Kann innerhalb desselben Pakets abgerufen werden | Gleiche Behandlung wie privat |
** Was ist dieselbe Assembly (DLL)? ** Dieselbe Assembly ist dieselbe exe-Datei oder DLL-Datei. Es scheint, dass es sich um dasselbe Projekt innerhalb der VisualStudio-Lösung handelt.
Verwenden Sie beim Erben :
(Doppelpunkt).
Fügen Sie der Methode, die Sie überschreiben möchten, "virtuell" hinzu und fügen Sie "überschreiben" hinzu, um sie zu überschreiben.
Wenn Sie das Überschreiben verhindern möchten, fügen Sie in Java der Methode "final" hinzu, in C # jedoch "ealed ". (Aktualisiert am 2020.07.21)
Java
class Program {
public static main(string[] args) {
SubA cl = new SubA();
cl.printStr1(); //SubA printStr1
}
}
class Base {
public void printStr1(){
System.out.println("Basis printStr1");
}
}
class SubA extends Base {
public void printStr1(){
System.out.println("SubA printStr1");
}
}
class SubA extends Base {
public final void printStr2(){ //Diese Methode kann nicht überschrieben werden
System.out.println("SubA printStr1");
}
}
C#
class Program
{
static void Main(string[] args)
{
SubA cl = new SubA();
cl.printStr1(); //SubA printStr1
}
}
class Base {
public virtual void printStr1(){
Console.WriteLine("Basis printStr1");
}
}
class SubA : Base {
public override void printStr1(){
Console.WriteLine("SubA printStr1");
}
}
class SubA : Base {
public override sealed void printStr1(){ //Diese Methode kann nicht überschrieben werden
Console.WriteLine("SubA printStr1");
}
}
Wenn Virtual und Override nicht hinzugefügt werden, werden sie nicht überschrieben. Referenzseite Das Ergebnis ist wie folgt. (Aktualisiert am 2020.07.21)
// https://wandbox.org/permlink/bE71rRgU8ZLTktBS
namespace Wandbox
{
class Program
{
static void Main(string[] args)
{
SubClass c1 = new SubClass();
c1.Method1(); // Class Method1
c1.Method2(); // Class Method2
BaseClass c2 = new SubClass();
c2.Method1(); //Basismethode1 * Weil es nicht überschrieben wurde
c2.Method2(); // Class Method2
}
}
public class BaseClass
{
public void Method1()
{
Console.WriteLine("Base Method1");
}
public virtual void Method2()
{
Console.WriteLine("Base Method2");
}
}
public class SubClass : BaseClass
{
public void Method1()
{
Console.WriteLine("Class Method1");
}
public override void Method2()
{
Console.WriteLine("Class Method2");
}
}
}
Kein Unterschied. Der Unterschied besteht darin, dass String-Vergleiche auch mit Gleichheitsoperatoren verglichen werden können.
Java
String strVal = "";
if("str".equals(strVal)){
System.out.println("Es ist das gleiche");
} else
{
System.out.println("Nein");
}
C#
string strVal = "";
if("str" == strVal){ //Ergänzung
Console.WriteLine("Es ist das gleiche");
} else
{
Console.WriteLine("Nein");
}
** Ergänzung ** Da der String-Typ ein Referenztyp ist, wird beim Vergleich mit dem Gleichheitsoperator in Java verglichen, ob er sich auf dieselbe Instanz bezieht. Im Fall von C # ist es jedoch möglich, Werte mit dieser Schreibmethode zu vergleichen, da string.equals hinter den Kulissen aufgerufen wird. .. Es gibt auch eine Methode namens "String.equals (String, StringComparison)", mit der Sie eine Vergleichsmethode angeben können. Ich hielt es daher für sicher, diese beim Schreiben von Code zu verwenden ... aber wenn dasselbe getan wird, die Codemenge Ist der Gleichheitsoperator mit weniger besser? (Aktualisiert am 2020.07.17)
Referenz → String.Equals-Methode --.NET-Tipps | dobon.net
Kein Unterschied
Java
int month = 7;
switch (month)
{
case 1:
case 2:
case 3:
System.out.println("1Q");
break;
case 4:
case 5:
case 6:
System.out.println("2Q");
break;
case 7:
case 8:
case 9:
System.out.println("3Q");
break;
case 10:
case 11:
case 12:
System.out.println("4Q");
break;
default:
System.out.println("Unzulässiger Wert.");
break;
}
C#
int month = 7;
switch (month)
{
case 1:
case 2:
case 3:
Console.WriteLine("1Q");
break;
case 4:
case 5:
case 6:
Console.WriteLine("2Q");
break;
case 7:
case 8:
case 9:
Console.WriteLine("3Q");
break;
case 10:
case 11:
case 12:
Console.WriteLine("4Q");
break;
default:
Console.WriteLine("Unzulässiger Wert.");
break;
}
Die Java-Erweiterung für Anweisung ist für jede in C #.
Java
for(int i = 0; i <= 10; i++){
System.out.println(str);
}
String[] strArgs = {"1", "2"};
for(String str : strArgs){
System.out.println(str);
}
C#
for(int i = 0; i <= 10; i++){
Console.WriteLine(str);
}
string[] strArgs = {"1", "2"};
foreach(string str in strArgs){
Console.WriteLine(str);
}
Es gibt keinen Unterschied zwischen Vorurteil und Nachurteil.
Java
int i = 0;
while (i < 5) {
System.out.println(i); //0,1,2,3,4 wird ausgegeben
i++;
}
do {
System.out.println(i); //0,1,2,3,4 wird ausgegeben
i++;
} while (i < 5);
C#
int i = 0;
while (i < 5) {
Console.WriteLine(i); //0,1,2,3,4 wird ausgegeben
i++;
}
do {
Console.WriteLine(i); //0,1,2,3,4 wird ausgegeben
i++;
} while (i < 5);
[Vergleich zwischen C # und Java](http://www.yo.rim.or.jp/~nag/cgi-bin/wiki.cgi?p=C%23%A4%C8Java%A4%CE%C8%E6 % B3% D3) Einführung in C #
Recommended Posts