13

ModuleVB.net での a のように、c# でグローバル関数を宣言する方法を誰か教えてもらえますか? form1、form2、および form3 で呼び出すことができる関数を呼び出す必要があります。


私はこのコードを持っています:

using System.Data.OleDb;

namespace XYZ
{
    public static class Module
    {
        public static void dbConnection()
        {
            OleDbConnection con = new OleDbConnection();
            con.ConnectionString = "provider= microsoft.jet.oledb.4.0;data source=..\\dbCooperative.mdb";
            con.Open();
        }
    }
}

とform1:

using System.Data.OleDb;
using XYZ;

namespace XYZ
{
    public partial class frmReports : Form
    {
        public frm1()
        {
            InitializeComponent();
        }

        private void frm1_Load(object sender, EventArgs e)
        {
            Module.dbConnection();
            OleDbCommand cm = new OleDbCommand("SELECT * FROM table", con);
        }
    }
}

しかし、私にはエラーがあります:「名前 'con'は現在のコンテキストに存在しません」。

4

4 に答える 4

26

C# 6.0 以降を使用している場合は、using static.

例えば、

using static ConsoleApplication.Developer;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            // Global static function, static shorthand really 
            DeveloperIsBorn(firstName: "Foo", lastname: "Bar")
                .MakesAwesomeApp()
                .Retires();
        }
    }
}

namespace ConsoleApplication
{
    class Developer
    {
        public static Developer DeveloperIsBorn(string firstName, string lastname)
        {
            return new Developer();
        }

        public Developer MakesAwesomeApp()
        {
            return this;
        }

        public Developer InsertsRecordsIntoDatabaseForLiving()
        {
            return this;
        }

        public void Retires()
        {
           // Not really
        }        
    }
}

もう 1 つの例:

using static System.Console;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            WriteLine("test");
        }
    }
}
于 2017-01-11T00:02:50.430 に答える
16

静的クラスを作成できます。

namespace MyNamespace
{
    public static class MyGlobalClass
    {
        public static void MyMethod() { ... }
    }
}

using次に、呼び出し元のクラスのセクションに名前空間を追加して、それにアクセスします。このような:

using MyNamespace;

public class CallingClass
{
    public  void CallingMethod()
    {
        MyGlobalClass.MyMethod();
    }
}
于 2012-06-23T14:44:01.270 に答える
3

静的クラスを作成し (メイン プロジェクトの名前空間を汚染しないように独自の名前空間で囲むこともできます)、どこからでも呼び出すことができます。

namespace SomeNamespace
{
    public static class SomeClass
    {
        public static string SomeMethod() 
        {
            ...
        }
    }
}

次に、コードで次を使用して呼び出すことができます。

string x = SomeNamespace.SomeClass.SomeMethod();

または、コードの先頭に を設定してusing、名前空間なしで参照することもできます。

using SomeNamespace;
...
string x = SomeClass.SomeMethod();
于 2012-06-23T14:50:14.830 に答える