Что это значит, когда вы добавляете статическое ключевое слово в метод?
public static void doSomething(){
//Well, do something!
}
Можете ли вы добавить static
ключевое слово в класс? Что бы это значило тогда?
Что это значит, когда вы добавляете статическое ключевое слово в метод?
public static void doSomething(){
//Well, do something!
}
Можете ли вы добавить static
ключевое слово в класс? Что бы это значило тогда?
Ответы:
static
Функция, в отличие от обычной ( например , функции), не связанный с экземпляром класса.
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
С другой точки зрения: учтите, что вы хотите внести некоторые изменения в одну строку. например, вы хотите сделать буквы заглавными и так далее. Вы делаете другой класс с именем «Инструменты» для этих действий. создание экземпляра класса «Инструменты» не имеет смысла, потому что в этом классе нет доступных сущностей (сравните с классом «Персона» или «Учитель»). Поэтому мы используем статическое ключевое слово для того, чтобы использовать класс «Инструменты», не создавая этого экземпляра, и когда вы нажимаете точку после имени класса («Инструменты»), вы можете получить доступ к нужным методам.
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 перед возвращаемым типом мембраны.
Вскоре вы не можете создать экземпляр статического класса: Пример:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
Вы не можете сделать так:
myStaticClass msc = new myStaticClass(); // it will cause an error
Вы можете сделать только:
myStaticClass.someFunction();
Ключевое слово static при применении к классу указывает компилятору создать один экземпляр этого класса. Тогда невозможно «создать» один или несколько экземпляров класса. Все методы в статическом классе должны быть объявлены как статические.
Возможно и часто желательно иметь статические методы нестатического класса. Например, метод фабрики, когда создается экземпляр другого класса, часто объявляется статическим, поскольку это означает, что конкретный экземпляр класса, содержащий метод фактора, не требуется.
Для хорошего объяснения того, как, когда и где см MSDN
static
класса вообще нет экземпляра.