Aide-mémoire C # pour les techniciens Java

Contexte

J'ai travaillé principalement sur Java jusqu'à présent, mais j'ai décidé d'utiliser C #, ce que j'ai rarement évoqué, alors j'ai étudié. Il y a quelques similitudes, mais il y a des différences dans les idées et des différences subtiles dans l'écriture, alors j'ai pensé que "comment dois-je écrire ceci?" Cela se produira certainement, alors j'ai choisi les endroits que je pense utiliser souvent et une feuille de triche J'ai essayé de résumer comme. Je connais les détails un par un.

Déclaration du colis à utiliser

Java La façon d'appeler est différente.

import java.util.ArrayList;

C#

using System.Collections.Generic;

Définition du package

La déclaration est différente. Faites également attention à la dénomination car l'idée est différente.

Java

package StudyPackage.com.anyplus

C#

namespace StudyPackage
//Il n'y a pas de domaine car l'idée est différente

Modificateur d'accès

Il y a des «internes» et des «internes protégés» que Java n'a pas. Notez également que même avec le même modificateur, la plage accessible diffère en raison de différences d'idées.

Qualificatif Java C#
public Accessible de n'importe où Accessible de n'importe où
protected Accessible à partir du même package ou des classes dérivées Accessible à partir des classes dérivées
internal n'existe pas Même assemblage(DLL)Accessible à l'intérieur
protected internal n'existe pas Même assemblage(DLL)Uniquement accessible dans ou à partir de types dérivés de la classe stockée
private Uniquement accessible depuis la même classe Uniquement accessible depuis la même classe
non spécifié
(default)
Peut être consulté dans le même package Même traitement que privé

** Qu'est-ce que le même assembly (DLL)? ** Le même assembly est le même fichier exe ou fichier DLL. Il semble qu'il s'agit du même projet au sein de la solution VisualStudio.

Héritage

Utilisez : (deux-points) lors de l'héritage. Ajoutez virtual à la méthode que vous voulez remplacer, et ajoutez ʻoverridepour la remplacer. Lorsque vous voulez interdire le remplacement, ajoutezfinal à la méthode en Java, mais ajoutez scellé` en C #. (Mis à jour le 21.07.2020)

Java

class Program {
    public static main(string[] args) {
        SubA cl = new SubA();
        cl.printStr1();    //SubA printStr1
    }
}

class Base {
    public void printStr1(){
        System.out.println("Impression de baseStr1");
    }
}

class SubA extends Base {
    public void printStr1(){
        System.out.println("SubA printStr1");
    }
}
class SubA extends Base {
    public final void printStr2(){   //Cette méthode ne peut pas être remplacée
        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("Impression de baseStr1");
    }
}

class SubA : Base {
    public override void printStr1(){
        Console.WriteLine("SubA printStr1");
    }
}
class SubA : Base {
    public override sealed void printStr1(){   //Cette méthode ne peut pas être remplacée
        Console.WriteLine("SubA printStr1");
    }
}

Si vous oubliez d'ajouter virtuel ou de remplacer

Si le virtuel et le remplacement ne sont pas ajoutés, ils ne seront pas remplacés. Site de référence Le résultat est le suivant. (Mis à jour le 21.07.2020)

// 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();   //Méthode de base1 * Parce qu'elle n'a pas été remplacée
            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");
         }
    }
}

if déclaration

Aucune différence. La différence est que les comparaisons de chaînes peuvent également être comparées aux opérateurs d'égalité.

Java

String strVal = "";

if("str".equals(strVal)){
    System.out.println("C'est le même");
} else
{
    System.out.println("Non");
}

C#

string strVal = "";

if("str" == strVal){  //Supplément
    Console.WriteLine("C'est le même");
} else
{
    Console.WriteLine("Non");
}

** Supplément ** Étant donné que le type String est un type référence, si vous le comparez avec l'opérateur d'égalité en Java, ce sera une comparaison s'il fait référence à la même instance, mais dans le cas de C #, puisque string.equals est appelé en arrière-plan, il est également possible de comparer des valeurs avec cette méthode d'écriture. .. Il existe également une méthode appelée String.equals (String, StringComparison) qui vous permet de spécifier une méthode de comparaison, donc j'ai senti qu'il était sûr de l'utiliser lors de l'écriture de code ... mais si la même chose est faite, la quantité de code L'opérateur d'égalité est-il avec moins de mieux? (Mis à jour le 17.07.2020)

Référence → Méthode String.Equals --.NET Tips | dobon.net

instruction switch

Aucune différence

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("Valeur illégale.");
    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("Valeur illégale.");
    break;
}

pour déclaration

L'extension Java pour instruction est pour chacun en 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);
}

déclaration while

Il n'y a pas de différence entre avant et après jugement.

Java

int i = 0;
while (i < 5) {
    System.out.println(i); //0,1,2,3,4 est la sortie
    i++;
}

do {
    System.out.println(i); //0,1,2,3,4 est la sortie
    i++;
} while (i < 5);

C#

int i = 0;
while (i < 5) {
    Console.WriteLine(i); //0,1,2,3,4 est la sortie
    i++;
}

do {
    Console.WriteLine(i); //0,1,2,3,4 est la sortie
    i++;
} while (i < 5);

référence

[Comparaison entre C # et Java](http://www.yo.rim.or.jp/~nag/cgi-bin/wiki.cgi?p=C%23%A4%C8Java%A4%CE%C8%E6 % B3% D3) Introduction à C #

Recommended Posts

Aide-mémoire C # pour les techniciens Java
Aide-mémoire Java
Aide-mémoire de l'API Java Stream
Aide-mémoire privé pour la programmation compétitive (Java)
javac, jar, feuille de triche de commande java
Cheet sheet pour les personnes expérimentées en Java pour apprendre Ruby (rails)
Premiers pas avec Ruby pour les ingénieurs Java
Technologie de lecture du code source (cheet sheet)
[Java] Aide-mémoire de classe de type de données / chaîne de caractères
Pour l'apprentissage JAVA (2018-03-16-01)
Aide-mémoire JMeter
IDE 2017 pour Java
Aide-mémoire de Kotlin
[Aide-mémoire Docker]
Java pour instruction
Pour les ingénieurs Java qui démarrent Kotlin à partir de maintenant
Premiers pas avec Groovy pour les ingénieurs Java gênants
Aide-mémoire Mockito + PowerMock
[Java] Package de gestion
Fiche technique des collections Eclipse
[Java] pour instruction / étendu pour instruction
Fiche technique du didacticiel Rails
Aide-mémoire Spring Boot2
Exercices de programmation Java pour les nouveaux arrivants impopulaires auprès des ingénieurs actifs
Contre-mesures pour OutOfMemoryError en java
Aide-mémoire pour la notation SCSS
PNL pour Java (NLP4J) (2)
(Mémo) Java pour instruction
PNL pour Java (NLP4J) (1)
Ce dont les ingénieurs Java ont besoin pour se préparer à la version Java 11
Aide-mémoire de la commande Docker
Exécution de débogage Java [pour les débutants Java]
[Java] Instruction de base pour les débutants
Livres utilisés pour apprendre Java
Programme de jugement des nombres premiers le plus rapide C # Java C ++
Test de compétence Java 2018 pour les nouveaux arrivants - Principes de base-
[Eclipse] Aide-mémoire sur les touches de raccourci
Java thread sans danger pour vous
Java pour les débutants, masquage des données
[Java] Conseils pour l'écriture de la source
Reproduire l'énumération Java en C #
Emplacement d'installation Java pour Mac
Histoire de remplacement C # et Java
Application Java pour les débutants: stream
Instructions Java while et for
Que choisissent les ingénieurs Java pour le «test automatique» de leurs navigateurs? Sélénium? Séléniure? Geb?