Що це означає, коли ви додаєте статичне ключове слово до методу?
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();
}
}
}
Статичний метод, поле, властивість або подія можна викликати в класі навіть тоді, коли не створено жодного примірника класу. Якщо створені будь-які екземпляри класу, їх не можна використовувати для доступу до статичного члена. Існує лише одна копія статичних полів та подій, а статичні методи та властивості можуть отримати доступ лише до статичних полів та статичних подій. Статичні члени часто використовуються для представлення даних або обчислень, які не змінюються у відповідь на стан об'єкта; наприклад, математична бібліотека може містити статичні методи обчислення синуса і косинуса. Члени статичного класу оголошуються за допомогою статичного ключового слова перед типом повернення в membe
Незабаром статичний клас неможливо встановити: Ex:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
Ви не можете зробити так:
myStaticClass msc = new myStaticClass(); // it will cause an error
Ви можете зробити лише:
myStaticClass.someFunction();
Статичне ключове слово, застосоване до класу, вказує компілятору створити єдиний екземпляр цього класу. Тоді неможливо «новий» один чи кілька екземплярів класу. Усі методи в статичному класі повинні бути оголошені статичними.
Можна, І часто бажано, стати статичні методи нестатичного класу. Наприклад, заводський метод, коли створюється екземпляр іншого класу, часто оголошується статичним, оскільки це означає, що певний екземпляр класу, що містить метод факторів, не потрібен.
Для гарного пояснення того, як, коли та де дивіться MSDN
static
Клас не має примірника взагалі.