タグ

ブックマーク / ufcpp.net (3)

  • 実装の隠蔽

    以下のように変数の前にキーワードを付けることでアクセシビリティを制御することが出来ます。 アクセシビリティ 変数宣言やメソッド定義 派生クラスについては後ほど「継承」で説明します。 また、アセンブリについては「プロジェクトの分割」で説明します。 アクセス権限のない場所からクラスのメンバーにアクセスしようとするとエラーになります。 例えば、アクセシビリティをprivateにした変数に、クラスの外部からアクセスしようとするとエラーになります。 とりあえず、今のところはクラスの外部に公開したいものはpublicに、そうでないものはprivateにするとだけ覚えておいてください。 ちなみに、アクセシビリティを明示的に指定しなかった場合、private (一番厳しい制限)扱いされます。 後述しますが、むやみに広い範囲からアクセスできると後々の修正が大変になることがあるので、 可能な限り狭い範囲からだ

    実装の隠蔽
    reboot_in
    reboot_in 2022/10/27
    “アクセシビリティを明示的に指定しなかった場合、private (一番厳しい制限)扱いされます。 ”
  • 小ネタ コンパイル結果を覗いてみよう

    めったにはないんですが、パフォーマンス チューニングとかを始めると、C#のコンパイル結果がどうなっているかを覗きたくなることがあります。C#の場合は、C#コード → IL (.NETの中間コード) → ネイティブ コードという2段階の変換が掛かります。 ということで、その極々まれにやりたくなることをやってみましょう。ILとネイティブ コードをそれぞれ覗いてみます。 例として、以下のようなC#コードを考えます。単純にvirtualなメソッドを呼び出すだけのコードです。主に、Mainメソッドの中身を見ていきます。 using System; class Base { public virtual void M() => Console.WriteLine("Base.M"); } class Derived : Base { public override void M() => Consol

    小ネタ コンパイル結果を覗いてみよう
    reboot_in
    reboot_in 2022/10/24
    “"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\ildasm.exe"”
  • プラットフォーム呼び出し

    概要 .NET Frameworkには豊富なライブラリが提供されていて、C#やVisual Basicなどの.NET Framework上で動くプログラミング言語だけを使ってたいていのことができます。 しかし、その他のプログラミング言語との相互運用をしたい場面も出てくるでしょう。 特に、OSに深くい込むような機能はいわゆるネイティブ コードで書かれたネイティブ ライブラリです。 .NET Frameworkはネイティブ ライブラリ中の機能を呼び出すための機能を備えていて、 これをP/Invoke (Platform Invoke: プラットフォーム呼び出し)と呼びます。 ここでは、C#から、このP/Invokeを使う(ネイティブ コードを呼び出す)方法について説明します。 ポイント .NET Framework はネイティブ ライブラリ呼び出し用の命令を持っている。 C# でネイティブコ

    プラットフォーム呼び出し
    reboot_in
    reboot_in 2020/10/19
    “C# 側の型とネイティブ側の型の対応関係に基づいて型を置き換える処理のことをマーシャリング (marshalling: 整列)といいます。”
  • 1