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.
Java La façon d'appeler est différente.
import java.util.ArrayList;
C#
using System.Collections.Generic;
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
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.
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, ajoutez
final à 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 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");
}
}
}
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
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;
}
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);
}
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);
[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