string?는 nullable한 string 변수를 사용하겠다는 의미인데
그냥 빌드하면 다음과 같은 경고를 내뱉는다.
warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. |
이 경우에는 아래와 같이 #nullable 어노테이션 컨텍스트를 이용해서 알려주면 경고가 뜨지 않게 된다.
using System;
using System.IO;
class test
{
static void Main()
{
string manyLines=@"This is line one
This is line two
Here is line three
The penultimate line is line four
This is the final, fifth line.";
using (var reader = new StringReader(manyLines))
{
#nullable enable
string? item;
do {
item = reader.ReadLine();
Console.WriteLine(item);
} while(item != null);
}
}
}
[링크 : https://stackoverflow.com/questions/55492214/]
[링크 : https://docs.microsoft.com/ko-kr/dotnet/csharp/nullable-references]
특성(attribute)
[링크 : https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/concepts/attributes/]
+
내용만 보면. java annotation에 대응되는건 attribute이고
c#의 annotation은 compiler directive에 가까운 것 같기도 하고... 조금 더 찾아봐야겠다.
[링크 : https://stackoverflow.com/questions/553857/]
+
#define 처럼 #이니까 directive 맞네 -_-