C#とjava
14747 ワード
C#(C-Sharp) Microsoft , “C/C++ ”。 , , C# Java , Microsoft Java 。 ?
,C# Java 。 Java , C# C# , 10 。
、C#、C++ Java
C# Microsoft Anders Hejlsberg Scott Wiltamuth 。 Microsoft , C# C++、Java 。 IT , C# Java C++, 。 , 1 。 , :Java C# , C# Java C++。
1: C#、C++ Java
C# C++ Java
, ,
“interface” “interface”
, ,
, 。 , 。 。 。
.NET (IL)
。
1 , , C# Java 。
、
2.1、
(Primitive) C# ,C# Java 。 ,C# unit, 。 2 C# :
2:C#
object
string ; Unicode
sbyte 8
short 16
int 32
long 64
byte 8
ushort 16
uint 32
ulong 64
float
double
bool ;bool true, false
char ; char Unicode
decimal 28
2.2、
Java static final 。 C# , const 。
public const int x = 55;
,C# readonly 。 , readonly 。readonly 。
2.3、
Java , main 。main String , 。 C# ,main Main( M),Main String , , :
public static void Main(String[] args)
,C# Main 。 Main , Main , 。 , Main :
public static void Main()
, ,Main int。 , Main 1:
using System;
public class Hello {
public static int Main() {
Console.WriteLine("Done");
return 1;
}
}
, Java main 。
2.4、switch
Java ,switch 。 C# switch , 。 switch C# :
using System;
public class Hello {
public static void Main(String[] args) {
switch (args[0]) {
case " ":
Console.WriteLine(" ! !");
break;
case " ":
Console.WriteLine(" ! !");
break;
default:
Console.WriteLine(" ! !");
break;
}
}
}
Java switch ,C# switch case break , goto switch case 。
2.5、foreach
foreach , 。 。
using System;
public class Hello {
public static void Main(String[] args) {
foreach (String arg in args)
Console.WriteLine(arg);
}
}
, “Hello Peter Kevin Richard”, :
Peter
Kevin
Richard
2.6、C# >>>
C# uint ulong 。 , C# , ( “>>”) ( int long) 。 uint ulong ; int long ,“>>” , , ,“>>” ; “>>” , 1。
Java 。 , “>>>” ; , “>>” 。
2.7、goto
Java goto 。 C# ,goto 。 ,C# goto, goto 。 Java , break continue C# goto。
2.8、
Java , , 。 , :
int[] x = { 0, 1, 2, 3 };
int x[] = { 0, 1, 2, 3 };
C# , ,[] 。
2.9、
C# , (Package) 。 C# “using”。 ,“using System;” System 。
, Java ,C# :
using TheConsole = System.Console;
public class Hello {
public static void Main() {
TheConsole.WriteLine(" ");
}
}
,Java .NET 。 , 。 Java , , .java 。 C# T # , , 。
.NET (Assembly)。 manifest 。manifest , , 。 , , 。.NET DLL , DLL Hell 。
2.10、
Java ,java.lang , 。 , , :
System.out.println("Hello world from Java");
C# 。 , System Console WriteLine 。 , 。 :
using System;
public class Hello {
public static void Main() {
Console.WriteLine("Hello world from C#");
}
}
2.11、
Java C# 。 , 。
: , 。 。
: Java C# , 。 C# internal , 。
:Java C# , 。
2.12、
。C# Java , internal。 ,C# 5 , :
public: 。
protected: 。
internal: 。
protected internal: 。
private: 。
2.13、
Java , “extends” 。C# C++ 。 , Control Button:
public class Button: Control { . . }
2.14、
C# final , , sealed , :
sealed class FinalClass { . . }
2.15、
C# Java 。 interface, 。 , “I” 。 C# , Java :
interface IShape { void Draw(); }
。 , IRectangularShape IShape ( , IShape IRectangularShape )。
interface IRectangularShape: IShape { int GetWidth(); }
, , :
interface INewInterface: IParent1, IParent2 { }
, Java ,C# (Field)。
, C# , 。 Java , public ( ), C# , public 。 , C# 。
interface IShape { public void Draw(); }
2.16、is as
C# is Java instanceof , 。 Java C# as 。as is , “ ”: ,as ; , null。
as , is 。 IShape , IShape Rectangle Circle。
using System;
interface IShape {
void draw();
}
public class Rectangle: IShape {
public void draw() {
}
public int GetWidth() {
return 6;
}
}
public class Circle: IShape {
public void draw() {
}
public int GetRadius() {
return 5;
}
}
public class LetsDraw {
public static void Main(String[] args) {
IShape shape = null;
if (args[0] == "rectangle") {
shape = new Rectangle();
}
else if (args[0] == "circle") {
shape = new Circle();
}
if (shape is Rectangle) {
Rectangle rectangle = (Rectangle) shape;
Console.WriteLine("Width : " + rectangle.GetWidth());
}
if (shape is Circle) {
Circle circle = (Circle) shape;
Console.WriteLine("Radius : " + circle.GetRadius());
}
}
}
, “rectangle” “circle” Main 。 “circle”, shape Circle ; , “rectangle”, shape Rectangle 。 , is shape : shape , shape Rectangle , GetWidth ; shape , shape Circle , GetRadius 。
as , :
using System;
interface IShape {
void draw();
}
public class Rectangle: IShape {
public void draw() {
}
public int GetWidth() {
return 6;
}
}
public class Circle: IShape {
public void draw() {
}
public int GetRadius() {
return 5;
}
}
public class LetsDraw {
public static void Main(String[] args) {
IShape shape = null;
if (args[0] == "rectangle") {
shape = new Rectangle();
}
else if (args[0] == "circle") {
shape = new Circle();
}
Rectangle rectangle = shape as Rectangle;
if (rectangle != null) {
Console.WriteLine("Width : " + rectangle.GetWidth());
}
else {
Circle circle = shape as Circle;
if (circle != null)
Console.WriteLine("Radius : " + circle.GetRadius());
}
}
}
, shape , as shape Rectangle 。 shape Rectangle, shape Rectangle rectangle , GetWidth 。 , 。 ,shape Circle circle 。 shape Circle , circle Circle , GetRadius 。
2.17、
C# 。 ,C# .NET 。 ,.NET .NET , VB.NET JScript.NET。 StringBuilder , String 。StringBuilder Java StringBuffer 。
2.18、
C++ 。 C++ , 。 , 。Java , 。C# 。 , OOP , 。C# C++ , , Java 。
2.19、
C# Java , , ? C# , Exception ( ?) , Java , try catch 。Exception .NET System 。
、Java
C# Java , ,C# Java( ) 。
3.1、
enum (Enumerator, ), 。 ,enum 。 , Fruit( ) , , 。
public class Demo {
public enum Fruit {
Apple, Banana, Cherry, Durian
}
public void Process(Fruit fruit) {
switch (fruit) {
case Fruit.Apple:
...
break;
case Fruit.Banana:
...
break;
case Fruit.Cherry:
...
break;
case Fruit.Durian:
...
break;
}
}
}
Process , int myVar , , Fruit , Applet、Banana、Cherry Durian 。 int ,enum , 。
3.2、
(Struct) 。 , , , 。 , , 。 , , 。
, 。 , , , “ ” 。 , 。
。 , “struct” “class”, 。
struct Point {
public int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
3.3、
C# (Field) , (Property)。 。 ―― 、 。 , , ; , (accessor), 。 , 、 , 。
C# , 。 , set / get 。 , ,PropertyDemo Prop 。
public class PropertyDemo {
private string prop;
public string Prop {
get {
return prop;
}
set {
prop = value;
}
}
}
, PropertyDemo Prop , get set 。 ,get ; ,set 。 set , value 。
, 。 , PropertyDemo , 、 Prop 。
PropertyDemo pd = new PropertyDemo();
pd.Prop = "123"; // set
string s = pd.Prop; // get
3.4、
Java , , ―― , 。 C# , 。 , ―― , , 。
C# , ref 。 , , 16。 i ProcessNumber 。
using System;
public class PassByReference {
public static void Main(String[] args) {
int i = 8;
ProcessNumber(ref i);
Console.WriteLine(i);
}
public static void ProcessNumber(ref int j) {
j = 16;
}
}
C# out, ref 。 , out , 。 , i ProcessNumber , 。 out ref, , 。
using System;
public class PassByReference {
public static void Main(String[] args) {
int i;
ProcessNumber(out i);
Console.WriteLine(i);
}
public static void ProcessNumber(out int j) {
j = 16;
}
}
, i ProcessNumber , PassByReference 。
3.5、C#
, C# , “ ” 。C# “ ”(unsafe) , , “ ” 。 , “ ” 。“ ” unsafe , “ ” 。 ,C# , “ ” 。
using System;
class UsePointer {
unsafe static void PointerDemo(byte[] arr) {
.
.
}
}
C# unsafe : , ( COM DLL C ) 。
3.6、
(delegate) C++ 。 , ,C# 、 、 。 , , , 。 。 , 。 , 。
System.Delegate 。 : , , 。 delegate 。 , :
delegate void TheDelegate();
: new , , 。 , 。
3.7、
, 。 ,C# 。 ,C# , 。 , , 。
C# .NET , “ ” (Boxing) (Unboxing) 。 。 ( ) , 。 value-type : , value-type 。
, 。 : value-type , 。
Java 。Java 。 , Integer int , Byte byte 。
【 】 C# Java。 , , C# Java 。 、 。 , , C# ?