Что такое «статический метод» в C #? - PullRequest
170 голосов
/ 08 ноября 2010

Что это значит, когда вы добавляете статическое ключевое слово в метод?

public static void doSomething(){
   //Well, do something!
}

Можете ли вы добавить ключевое слово static в класс? Что бы это значило тогда?

Ответы [ 8 ]

298 голосов
/ 08 ноября 2010

Функция 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
25 голосов
/ 22 июля 2014

С другой точки зрения: учтите, что вы хотите внести некоторые изменения в одну строку.например, вы хотите сделать буквы заглавными и так далее.Вы делаете другой класс с именем «Инструменты» для этих действий.создание экземпляра класса «Инструменты» не имеет смысла, потому что в этом классе нет доступных сущностей (сравните с классом «Персона» или «Учитель»).Поэтому мы используем ключевое слово static для того, чтобы использовать класс «Инструменты», не создавая этого экземпляра, и когда вы нажимаете точку после имени класса («Инструменты»), вы можете получить доступ к нужным методам.

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();

    }
}
}
13 голосов
/ 01 февраля 2013

Статический метод, поле, свойство или событие вызывается в классе, даже если экземпляр класса не создан.Если какие-либо экземпляры класса созданы, их нельзя использовать для доступа к статическому члену.Существует только одна копия статических полей и событий, и статические методы и свойства могут обращаться только к статическим полям и статическим событиям.Статические члены часто используются для представления данных или расчетов, которые не меняются в зависимости от состояния объекта;например, математическая библиотека может содержать статические методы для вычисления синуса и косинуса.Статические члены класса объявляются с использованием ключевого слова static перед типом возвращаемого значения

5 голосов
/ 08 ноября 2010

Статическая функция означает, что она связана с классом (не конкретным экземпляром класса, а самим классом) и может вызываться, даже если экземпляров класса не существует.

Статический класс означает, что класс содержит только статические члены.

4 голосов
/ 20 июня 2013

Вскоре вы не можете создать экземпляр статического класса: Пример:

static class myStaticClass
{
    public static void someFunction()
    { /* */ }
}

Вы не можете сделать так:

myStaticClass msc = new myStaticClass();  // it will cause an error

Вы можете сделать только:

myStaticClass.someFunction();
0 голосов
/ 07 марта 2017

Когда вы добавляете «статическое» ключевое слово в метод, это означает, что базовая реализация дает одинаковый результат для любого экземпляра класса. Излишне говорить, что результат меняется с изменением значения параметров

0 голосов
/ 06 июня 2012

Статическая переменная не связана с объектом класса. Доступ к нему можно получить с помощью имени класса. Весь объект класса будет иметь общую статическую переменную.

Делая функцию статической, она ограничит доступ этой функции в этом файле.

0 голосов
/ 08 ноября 2010

Ключевое слово static при применении к классу указывает компилятору создать один экземпляр этого класса. В этом случае невозможно «создать» один или несколько экземпляров класса. Все методы в статическом классе должны быть объявлены как статические.

Возможно и часто желательно иметь статические методы нестатического класса. Например, метод фабрики, когда создается экземпляр другого класса, часто объявляется статическим, поскольку это означает, что конкретный экземпляр класса, содержащий метод фактора, не требуется.

Хорошее объяснение того, как, когда и где см. MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...