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