C#のためのJava入門(ネットコア)
序文
ノウハウ訪問するとき、ほぼ以前のC#言語を知っているものの、.NETのコアに接触するだけでなく、数とJavaとの間の相関関係を理解するために、まだ霧、私はJavaの香港との間には非常に簡単変換を聞いたと.NET、私が試してみて。
環境
.NETコア3.1
C#8.0
コード対
対コードの環境を使用して、それが便利、しかし軽量対優れています。
純コアSDKインストールし、いくつかのC#プラグイン。
市場へのVscodeプラグは、(それまでにインストールされている)のC#を見つけます。フルネーム:
(OmniSharpによって供給)のVisual StudioのコードのためのC#。
プラグインをインストールすると、デフォルトで2つの依存関係を追加し、それは待つことができます。
私はC#.NETコンパイラを含むものの、あなたは1つのファイルを実行する必要があり、C#.NETコアSDKの単一のコンパイラを見つけられませんでしたC#コンパイラとは独立してダウンロードすることができます
テスト
.NETのコアSDKをインストールした後、コマンドラインウィンドウを使用してdotnet
、次の正常にインストールを促す、コマンドを。
PS D:\> dotnet
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help Display help.
--info Display .NET Core information.
--list-sdks Display the installed SDKs.
--list-runtimes Display the installed runtimes.
最初のアプリケーション
使用して、新しいxxxは、関連するアプリケーションを作成することができますDOTNET。
dotnet new console -output project_name //console应用
dotnet new webapp -o projrct_name //webapp
....
HelloWorldのと呼ばれるコンソールアプリケーション、等。
dotnet new console --output helloworld
フォルダ内のディレクトリには、以下の書類をHelloWorldのそれが生成されます。
helloworld\helloworld.csproj//配置文件
helloworld\Program.cs//项目入口文件
プロジェクトエントリファイル次のように:
using System;//使用系统命名空间
namespace helloworld//命名空间
{
class Program//类名
{
static void Main(string[] args)//主方法
{
Console.WriteLine("Hello World!");//输出
}
}
}
この時点で、DOTNETは、プロジェクトの実行を実行するには、コンソールで実行されます。
>dotnet run
Hello world!
次のようにコンフィギュレーションファイルは、次のとおりです。
<Project Sdk="Microsoft.NET.Sdk">//sdk类型
<PropertyGroup>
<OutputType>Exe</OutputType>//输出类型为exe
<TargetFramework>netcoreapp3.1</TargetFramework>//目标框架
</PropertyGroup>
</Project>
JavaからC#へ
C#とJavaの構文に類似、およびC ++はリンクされています。また、C#がまた、JavaScriptを置き換えることができ、そのため同じ構文のJS部分を持っています。その後、C#とJavaの外観は異なっています。
図1に示すように、モジュール管理
異なるファイルの管理におけるJavaはパッケージを介してであり、C#、C ++の名前空間で使用されています。
2、型推論
変数宣言を行うとき、var
キーワード型推論を行うことができ、JSなどいます。
3、補間文字列
$ {}とテンプレート構文の実装により、C#の。
var str="World!!!";
Console.WriteLine($"Hello {str}");
//Hello World!!!
4、Foreachループ
C#やJavaは、支持データ構造タイプ(アレイ、コレクション、等)に拡張悪いを通じてのために提供されます。
C#のforeachループでは:
var s=new int[]{0,1,2,3};
foreach(var i in s){
Console.WriteLine(i);
}
項目別のJava:フォームの項目:
int[] s=new int[]{0,1,2,3};
for(int i:s){
System.out.println(i);
}
5、構造
C#の支持構造体、およびC ++のようにいます、。
C#の支持構造体、およびC ++のようにいます、。
以下に示すようにして、構造体キーワード、コンストラクタを宣言し、通常の方法を有しています。
public struct Name {
public string fName;
public string lName;
public Name(string fName,string lName){
this.lName=lName;
this.fName=fName;
}
public string getname(){
return this.fName+" "+this.lName;
}
}
同じメソッドとクラスを使用します。
var n=new Name("Tom","Blue");
Console.WriteLine(n.getname());
そして、クラスが異なります。
構造は、値型で、継承をサポートしていません。
しかし、インターフェイスをサポートしています。
6、ラムダ式
JavaとC#は、ラムダ式、jdk1.7開始からのJavaサポートを提供します。
Javaが使用し、関数インタフェースを使用する前に必要とされる形式** - > **
//使用前需要先定义一个函数式接口
@FunctionalInterface
interface FuncIn{
void hello(String s);
}
//之后使用lambdab表达式实现这个接口,才能调用。
FuncIn f=s->{
System.out.println("hello "+s);
};
f.hello("jim");
達成するためにC#のデリゲート型のFuncとアクションを使用してラムダ式は、戻り値アクションタイプは、ジェネリックのサポートを必要とする、のFunc戻り値の型を使用します。
使用形式デリゲート型<... T>関数名=(... T)=> {}
//无返回值使用Action类型
Action f=()=>Console.WriteLine("a func ....");
f();
Action<int> f1=x=>{
Console.WriteLine(x)
};
f1(10);
//有返回值使用Func类型
Func<int,int> f2=x=>x*x;
Console.WriteLine(f2(2));
Func<string,string,string> f3=(a,b)=>a+"---"+b;
Console.WriteLine(f3("hello","world"));
ラムダ式の委任メカニズムを使用してC#が比較的簡単です。
7、アクセサ
私有財産でJavaは、一般的に、\ setメソッドを取得し、C#は、アクセサと呼ばれ、構造体とクラスは次の形式をサポートしています。
public string FName{
get=>this.fName;//使用了lambda表达式
set=>this.fName=value;
//get{return this.fName;}//实际格式
//set{this.fName=value;}
//get; set;自动实现对访问器的支持
}
//外界可以通过x.FName进行访问,缺失get将无法访问,缺失set将无法修改。
8、継承
表現を:使用してC#で継承。以下のような:
public class His:Hi{
}
//此时His类已经继承Hi类的所有公开部分。
//使用父类接收子类的实例,并且调用父类的方法。
Hi h=new His();
h.sayHi("sally");
そのようなC#のイベント、委託インデクサの概念などの一部は、あります。
文法に変換するC#の開発者とJava開発者は、難しいことではありません。