【お題】甲子園での思い出の残し方

入門書や入門サイトなどで解説されているクラスは、以下のようにインスタンスを生成し、その変数名でメンバ変数やメソッドにアクセスしています。ところが既存の Image クラスでは、インスタンスではなくクラス名で FromFile というメソッド(?)にアクセスしています。この FromFile はどのように定義されてるのでしょう?

namespace MyApplication
{
  public partial class Form1 : Form
  {
    private void Form1_Load(object sender, EventArgs e)
    {
      Sample ex = new Sample();//インスタンス生成
      ex.dt = 4; //インスタンス名でアクセス
      ex.MyFunc();
      
      //クラス名でアクセス
      Image img = Image.FromFile("\\Visual Studio 2019 Source\\images\\show prev.png");
      PictureBox1.Image = img;//画像を表示
    }
  }

  class Sample
  {
    int dt;
    public void MyFunc()
    {
      ………
    }
  }
}

A 回答 (1件)

>インスタンスではなくクラス名で FromFile というメソッド(?)にアクセスしています。

この FromFile はどのように定義されてるのでしょう?

普通にstaticなメソッドかと。
インスタンスのフィールドやプロパティにアクセスする必要がなく、メソッド内で完結(または他のstaticメソッドで済む)という場合はインスタンス生成しなくても利用できます。
staticなクラスならフィールドやプロパティも利用可能ですな。こちらはインスタンス生成できませんが。

で、該当のメソッドは…Imageなオブジェクトを返すメソッドですが、インスタンスは必要としないのでstaticなんでしょう。
既存のImageオブジェクトから一部をコピー、切り出しとかする場合はインスタンスからということでstaticなメソッドにはならない。と。
# 引数で渡す。というのであればstaticでも可ですが。
    • good
    • 0
この回答へのお礼

丁寧な回答まことにありがとうございました。もう少しクラスの勉強を続けます。

お礼日時:2021/10/22 09:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!