정적 키워드를 메소드에 추가 할 때의 의미는 무엇입니까?
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의 리턴 유형 전에 static 키워드를 사용하여 선언됩니다.
답변
정적 함수는 클래스 (클래스의 특정 인스턴스가 아니라 클래스 자체)와 연관되어 있으며 클래스 인스턴스가없는 경우에도 호출 할 수 있음을 의미합니다.
정적 클래스는 클래스에 정적 멤버 만 포함됨을 의미합니다.
답변
곧 정적 클래스를 인스턴스화 할 수 없습니다 : 예 :
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
다음과 같이 만들 수 없습니다 :
myStaticClass msc = new myStaticClass(); // it will cause an error
당신은 만들 수 있습니다 :
myStaticClass.someFunction();
답변
“정적”키워드를 메소드에 추가하면 기본 구현이 클래스의 모든 인스턴스에 대해 동일한 결과를 제공한다는 것을 의미합니다. 말할 필요도없이, 결과는 매개 변수 값의 변화에 따라 달라집니다
답변
정적 변수는 클래스의 객체와 연결되지 않습니다. 클래스 이름을 사용하여 액세스 할 수 있습니다. 클래스의 모든 객체는 정적 변수를 공유합니다.
기능을 정적으로 만들면 해당 파일 내에서 해당 기능의 액세스가 제한됩니다.
