当前位置:编程学习 > C#/ASP.NET >>

为什么有的C#代码,只是开始using进来,之后没有创建实例却可以直接调用

这是什么道理 --------------------编程问答-------------------- 是说静态类吗???static --------------------编程问答--------------------
    public class Ss
    {
        //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        //@@@@@@@@@@@@@@@@@@@ INITIALIZATION OPERATION  @@@@@@@@@@@@@@@@@@@@@
        //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        [DllImport("Si.dll")]
        public static extern int SsmStartCti(string lpSsmCfgFileName, string lpIndexCfgFileName);
--------------------编程问答-------------------- 这是调用API的方法 --------------------编程问答-------------------- 帮顶,不懂! --------------------编程问答-------------------- API,外部静态方法。 --------------------编程问答-------------------- API,外部静态方法   ---就不需要创建实例了? --------------------编程问答-------------------- DLLImport进来的方法都是系统API
这种声明的都是静态方法
所以可以直接调用
不需要实例化 --------------------编程问答-------------------- 这是调用的外部动态链接库(DLL)
可以到MSDN上查找DllImport的帮助. --------------------编程问答-------------------- 这是C#调用C++或者C语言写的Com组件或者dll的方法。
告诉C#我在调用一个外部方法,这个方法在自定义属性说明的那个dll中。 --------------------编程问答-------------------- 静态方法 
不需要实例化 --------------------编程问答-------------------- api 调用 --------------------编程问答-------------------- 静态 --------------------编程问答-------------------- 虽说楼主给的这个例子是一个外部的方法
但是这个与楼主的问题几乎没什么关系

之所以能够直接使用
还是因为它是静态(static)的原因
凡是被static标记过的类或者属性或者方法
都是可以直接调用而不用实例化的

这是因为
static 修饰符指明成员属于类本身而不属于类的实例。即使创建了类的多个实例,给定应用程序中只存在 static 成员的一个副本。您只能通过对类的引用(而不是对实例的引用)来访问 static 成员。但是,在类成员声明中,可以通过 this 对象来访问 static 成员。

类的成员可以使用 static 修饰符来标记。类、接口和接口的成员不能采用 static 修饰符。

不能将 static 修饰符与任何继承修饰符(abstract 和 final)或版本安全修饰符(hide 和 override)组合。

不要将 static 修饰符同 static 语句混淆。static 修饰符表示属于类本身(而不属于任何类实例)的成员。
--------------------编程问答-------------------- 常数或者类型声明隐式地是静态成员。

不能通过实例引用静态成员。然而,可以通过类型名称引用它。例如,请考虑以下类: 
public class MyBaseC 
{
    public struct MyStruct 
    {
        public static int x = 100;
    }
}


 

若要引用静态成员 x,请使用完全限定名(除非可从相同范围访问):
MyBaseC.MyStruct.x


 

尽管类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。

不可以使用 this 来引用静态方法或属性访问器。

如果对类应用 static 关键字,则该类的所有成员都必须是静态的。

类和静态类可以有静态构造函数。静态构造函数在程序开始和类实例化之间的某个时刻调用。

 

为了说明静态成员,请看一个表示公司雇员的类。假设该类包含一种对雇员计数的方法和一个存储雇员数的字段。该方法和字段都不属于任何实例雇员,而是属于公司类。因此,应该将它们声明为此类的静态成员。


此示例读取新雇员的姓名和 ID,将雇员计数器加一,并显示新雇员的信息和新的雇员数。为简单起见,该程序从键盘读取当前的雇员数。在实际的应用中,应从文件读取此信息。

 
// cs_static_keyword.cs
using System;

public class Employee
{
    public string id;
    public string name;

    public Employee()
    {
    }

    public Employee(string name, string id)
    {
        this.name = name;
        this.id = id;
    }

    public static int employeeCounter;

    public static int AddEmployee()
    {
        return ++employeeCounter;
    }
}

class MainClass : Employee
{
    static void Main()
    {
        Console.Write("Enter the employee's name: ");
        string name = Console.ReadLine();
        Console.Write("Enter the employee's ID: ");
        string id = Console.ReadLine();

        // Create and configure the employee object:
        Employee e = new Employee(name, id);
        Console.Write("Enter the current number of employees: ");
        string n = Console.ReadLine();
        Employee.employeeCounter = Int32.Parse(n);
        Employee.AddEmployee();

        // Display the new information:
        Console.WriteLine("Name: {0}", e.name);
        Console.WriteLine("ID:   {0}", e.id);
        Console.WriteLine("New Number of Employees: {0}",
                      Employee.employeeCounter);
    }
}

此示例说明:虽然可以用另一个尚未声明的静态字段实例化一个静态字段,但直到向后者显式赋值后,才能确定结果。

PS:没事多看看MSDN
--------------------编程问答-------------------- 调用 API函数阿。 --------------------编程问答-------------------- 没看的明白。。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,