C 언어
속성 프로그램에서 클래스, 메서드, 구조, 열거자, 어셈블리 등과 같은 다양한 요소의 동작에 대한 정보를 런타임에 전달하는 데 사용되는 선언적 태그입니다. 속성을 사용하여 프로그램에 선언적 정보를 추가할 수 있습니다. 선언적 태그는 사용된 요소 위에 있는 대괄호([ ])로 표시됩니다.
속성은 컴파일러 명령과 같은 메타데이터와 주석, 설명, 메서드 및 클래스와 같은 기타 정보를 프로그램에 추가하는 데 사용됩니다. .Net Framework는 두 가지 유형의 속성을 제공합니다. 사전 정의된 속성 및 맞춤 제작 속성.
속성을 지정하는 구문은 다음과 같습니다 -
[attribute(positional_parameters, name_parameter = value, ...)] element
속성의 이름과 값은 속성이 적용되는 요소 앞의 대괄호 안에 지정됩니다. 위치 매개변수는 필수 정보를 지정하고 이름 매개변수는 선택적 정보를 지정합니다.
.Net Framework는 미리 정의된 세 가지 속성을 제공합니다.
사전 정의된 속성 AttributeUsage 사용자 정의 속성 클래스를 사용하는 방법을 설명합니다. 속성을 적용할 수 있는 항목의 유형을 지정합니다.
이 속성을 지정하는 구문은 다음과 같습니다 -
[AttributeUsage ( validon, AllowMultiple = allowmultiple, Inherited = inherited )]
어디,
validon 매개변수는 속성을 배치할 수 있는 언어 요소를 지정합니다. 열거자 AttributeTargets 값의 조합입니다. . 기본값은 AttributeTargets.All입니다. .
매개변수 allowmultiple (선택 사항) AllowMultiple에 대한 값을 제공합니다. 이 속성의 속성은 부울 값입니다. 이것이 true인 경우 속성은 다중 사용입니다. 기본값은 false(일회용)입니다.
상속된 매개변수(선택 사항)는 상속됨에 대한 값을 제공합니다. 이 속성의 속성은 부울 값입니다. true이면 특성이 파생 클래스에서 상속됩니다. 기본값은 false(상속되지 않음)입니다.
예를 들어,
[AttributeUsage( AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)]
이 미리 정의된 속성은 실행이 지정된 전처리 식별자에 따라 달라지는 조건부 메서드를 표시합니다.
Debug와 같은 지정된 값에 따라 메서드 호출의 조건부 컴파일이 발생합니다. 또는 추적 . 예를 들어 코드를 디버깅하는 동안 변수의 값을 표시합니다.
이 속성을 지정하는 구문은 다음과 같습니다 -
[Conditional( conditionalSymbol )]
예를 들어,
[Conditional("DEBUG")]
다음 예는 −
속성을 보여줍니다. 라이브 데모#define DEBUG using System; using System.Diagnostics; public class Myclass { [Conditional("DEBUG")] public static void Message(string msg) { Console.WriteLine(msg); } } class Test { static void function1() { Myclass.Message("In Function 1."); function2(); } static void function2() { Myclass.Message("In Function 2."); } public static void Main() { Myclass.Message("In Main function."); function1(); Console.ReadKey(); } }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
In Main function In Function 1 In Function 2
이 사전 정의된 속성은 사용해서는 안 되는 프로그램 엔티티를 표시합니다. 이를 통해 컴파일러에 특정 대상 요소를 삭제하도록 알릴 수 있습니다. 예를 들어 클래스에서 새 메서드를 사용 중이고 여전히 클래스에서 이전 메서드를 유지하려는 경우 이전 메서드 대신 새 메서드를 사용해야 한다는 메시지를 표시하여 해당 메서드를 사용되지 않는 것으로 표시할 수 있습니다.
이 속성을 지정하는 구문은 다음과 같습니다 -
[Obsolete ( message )] [Obsolete ( message, iserror )]
어디,
매개변수 메시지 , 항목이 더 이상 사용되지 않는 이유와 대신 사용할 항목을 설명하는 문자열입니다.
매개변수 iserror 는 부울 값입니다. 값이 true이면 컴파일러는 항목 사용을 오류로 처리해야 합니다. 기본값은 false입니다(컴파일러가 경고를 생성함).
다음 프로그램은 이것을 보여줍니다 -
using System; public class MyClass { [Obsolete("Don't use OldMethod, use NewMethod instead", true)] static void OldMethod() { Console.WriteLine("It is the old method"); } static void NewMethod() { Console.WriteLine("It is the new method"); } public static void Main() { OldMethod(); } }
프로그램을 컴파일하려고 할 때 컴파일러는 다음과 같은 오류 메시지를 표시합니다. -
Don't use OldMethod, use NewMethod instead
.Net Framework를 사용하면 선언적 정보를 저장하는 데 사용할 수 있고 런타임에 검색할 수 있는 사용자 지정 특성을 만들 수 있습니다. 이 정보는 설계 기준 및 적용 요구 사항에 따라 모든 대상 요소와 관련될 수 있습니다.
사용자 정의 속성 생성 및 사용에는 4단계가 포함됩니다. -
마지막 단계는 다양한 표기법을 찾기 위해 메타데이터를 읽는 간단한 프로그램을 작성하는 것입니다. 메타데이터는 데이터에 대한 데이터 또는 다른 데이터를 설명하는 데 사용되는 정보입니다. 이 프로그램은 런타임에 속성에 액세스하기 위해 리플렉션을 사용해야 합니다. 이에 대해서는 다음 장에서 논의할 것입니다.
새 사용자 정의 속성은 System.Attribute에서 파생되어야 합니다. 수업. 예를 들어,
//a custom attribute BugFix to be assigned to a class and its members [AttributeUsage( AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute
앞의 코드에서 DeBugInfo라는 사용자 정의 속성을 선언했습니다. .
DeBugInfo라는 사용자 정의 속성을 구성해 보겠습니다. , 모든 프로그램을 디버깅하여 얻은 정보를 저장합니다. 다음 정보를 저장하도록 합니다 -
디버그 정보 클래스에는 처음 3개의 정보를 저장하기 위한 3개의 개인 속성과 메시지를 저장하기 위한 공용 속성이 있습니다. 따라서 버그 번호, 개발자 이름 및 검토 날짜는 DeBugInfo 클래스의 위치 매개변수이며 메시지는 선택적 또는 명명된 매개변수입니다.
각 속성에는 하나 이상의 생성자가 있어야 합니다. 위치 매개변수는 생성자를 통해 전달되어야 합니다. 다음 코드는 DeBugInfo를 보여줍니다. 클래스 -
//a custom attribute BugFix to be assigned to a class and its members [AttributeUsage( AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute { private int bugNo; private string developer; private string lastReview; public string message; public DeBugInfo(int bg, string dev, string d) { this.bugNo = bg; this.developer = dev; this.lastReview = d; } public int BugNo { get { return bugNo; } } public string Developer { get { return developer; } } public string LastReview { get { return lastReview; } } public string Message { get { return message; } set { message = value; } } }
속성은 대상 바로 앞에 배치하여 적용됩니다 -
[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")] [DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")] class Rectangle { //member variables protected double length; protected double width; public Rectangle(double l, double w) { length = l; width = w; } [DeBugInfo(55, "Zara Ali", "19/10/2012", Message = "Return type mismatch")] public double GetArea() { return length * width; } [DeBugInfo(56, "Zara Ali", "19/10/2012")] public void Display() { Console.WriteLine("Length: {0}", length); Console.WriteLine("Width: {0}", width); Console.WriteLine("Area: {0}", GetArea()); } }
다음 장에서는 Reflection 클래스 개체를 사용하여 속성 정보를 검색합니다.
C 언어
한 데이터 유형을 다른 데이터 유형으로 변환하는 것을 유형 변환 또는 유형 변환이라고 합니다. 예를 들어, long 값을 간단한 정수로 저장하려면 long을 int로 캐스트할 수 있습니다. 캐스트 연산자를 사용하여 명시적으로 값을 한 유형에서 다른 유형으로 변환할 수 있습니다. 다음과 같이 - (type_name) expression 캐스트 연산자가 하나의 정수 변수를 다른 정수 변수로 나누는 것이 부동 소수점 연산으로 수행되도록 하는 다음 예를 고려하십시오 - 라이브 데모 #include <stdio.h> ma
창고 관리자는 재고가 있는 모든 비즈니스에 필수적인 인력이므로 많은 기업이 이러한 관리자의 강점과 약점에 따라 살고 죽습니다. 작업에 적합한 사람을 찾는 것은 쉽지 않을 수 있지만, 원활하고 효율적인 창고 운영을 위해서는 그렇게 하는 것이 중요합니다. 창고 관리는 복잡하고 다면적인 역할을 하는 사람이 효과적이기 위해서는 여러 분야에 능숙해야 합니다. 진정으로 뛰어난 창고 관리자의 상위 7가지 속성은 다음과 같습니다. 1. 조직 능력 2. 정밀도 업무의 중요성과 다양한 측면으로 인해 우수한 창고 관리자가 되려면 창고를 감독할