将静态关键字添加到方法时,这意味着什么?什么是C#中的“静态方法”?
public static void doSomething(){
//Well, do something!
}
您可以将static
关键字添加到类中吗?那意味着什么?
将静态关键字添加到方法时,这意味着什么?什么是C#中的“静态方法”?
public static void doSomething(){
//Well, do something!
}
您可以将static
关键字添加到类中吗?那意味着什么?
A static
功能,不像常规(实例)功能,与类的实例不相关。
A static
类是只能包含static
成员的类,因此不能实例化。
例如:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
为了调用InstanceMethod
,你需要的类的实例:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
所以它就像一个类方法而不是实例方法? – Moshe 2010-11-08 13:12:14
@Moshe:是的,没错。 – 2010-11-08 13:14:12
@Moshe:没错。使用静态方法,您不需要类的实例来调用方法,而只需要类。 – 2010-11-08 13:14:21
静态函数意味着它与类(不特定实例相关联类但类本身),即使没有类实例存在,也可以调用它。
静态类意味着类只包含静态成员。
static关键字在应用于类时告诉编译器创建该类的单个实例。然后不可能“新”一个或多个类的实例。静态类中的所有方法都必须声明为静态。
有可能,而且经常希望拥有非静态类的静态方法。例如,创建另一个类的实例时的工厂方法通常被声明为静态,因为这意味着不需要包含因子方法的类的特定实例。
有关如何,何时何地看到MSDN
不,静态类从未实例化。鉴于其中的所有内容都是静态的,你为什么要*实例化它? – 2010-11-08 13:17:41
“静态”类根本没有实例。 – SLaks 2010-11-08 13:17:59
对不起,我不明白......我说过创建了一个实例,你不能新建一个实例。肯定会创建一个单一的静态实例,否则代码将无法调用? – 2010-11-08 13:57:31
的静态变量不与类的对象链接一个很好的解释。它可以使用classname来访问。该类的所有对象将共享静态变量。
通过使函数成为静态函数,它将限制该函数在该文件中的访问。
即使没有创建类的实例,也可以在类上调用静态方法,字段,属性或事件。如果创建了该类的任何实例,则不能使用它们来访问静态成员。静态字段和事件只存在一个副本,静态方法和属性只能访问静态字段和静态事件。静态成员通常用于表示不响应对象状态而改变的数据或计算;例如,数学库可能包含用于计算正弦和余弦的静态方法。 静态类成员使用static关键字的membe的返回类型之前宣布
不久你不能实例化静态类: 例:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
你不能让这样的:
myStaticClass msc = new myStaticClass(); // it will cause an error
你只能:
myStaticClass.someFunction();
从另一个角度来看: 请考虑您想对单个字符串进行一些更改。例如,你想使字母为大写字母,例如 等等。 您为这些操作创建另一个名为“工具”的类。 由于在该类中没有任何种类的实体(与“Person”或“Teacher”类相比),因此没有制作“Tools”类的实例的含义。 所以 我们使用静态关键字来使用“工具”类而不创建任何实例,并且当您在类名称后面按下(“工具”)时,您可以访问所需的方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
Console.ReadKey();
}
}
public static class Tools
{
public static string ToUpperCase(string str)
{
return str.ToUpper();
}
}
}
向方法中添加“static”关键字时,这意味着底层实现为该类的任何实例提供了相同的结果。不用说,结果随参数值的变化而变化
您可以使用静态方法,而无需简单地通过class_name.static_method_name()创建该类的实例。 – 2010-11-08 13:27:25