[C#] .NET에서 바이트의 리터럴 접미사?

float 또는 double과 같은 짧은 방법으로 바이트 변수를 선언하는 방법이 있는지 궁금합니다. 내가 좋아하는 것을 의미 5f하고 5d. 물론 쓸 수 byte x = 5는 있지만 var지역 변수에 사용하면 약간 중요하지 않습니다 .



답변

온 리터럴 접미사에 대한 언급이 없다 바이트에 대한 MSDN 참조 뿐만 아니라에서 C # 4.0 언어 사양 . C #에서 유일한 리터럴 접미사는 다음과 같이 정수 및 실수입니다.

u = uint
l = long
ul = ulong
f = float
m = decimal
d = double

을 사용 var하려면 항상 다음과 같이 바이트를 캐스트 할 수 있습니다var y = (byte) 5

실제로는 관련이 없지만 C # 7에서는 0b숫자가 이진 형식 임을 나타내는 새로운 이진 접두사가 도입되었습니다 . 그래도 바이트로 만들 접미사가 없습니다 (예 :

var b = 0b1010_1011_1100_1101_1110_1111; //int


답변

그래서 지난 가을 VB에 이진 리터럴을 추가했으며 초기 테스터로부터 비슷한 피드백을 받았습니다. VB의 바이트 접미사를 추가하기로 결정했습니다. 우리는 SB (부호있는 바이트)와 UB (부호없는 바이트)를 정했다. B와 SB가 아닌 이유는 두 가지입니다.

하나, B 접미어는 16 진수 (0xFFB는 무엇을 의미합니까?)로 작성하는 경우 모호하며 ‘B’이외의 다른 문자가 있거나 ( ‘Y’로 간주되면 F #에서 사용합니다) no .NET 바이트는 기본적으로 부호가 없으므로 B와 SB를 선택하는 것이 합리적이지만 다른 모든 접미사는 기본적으로 부호가 있으므로 B를 선택하는 다른 유형 접미사와 일치합니다. UB. 결국 우리는 명백한 SB와 UB에 갔다. -Anthony D. Green,

https://roslyn.codeplex.com/discussions/542111

분명히 그들은 VB.NET 에서이 이동을 수행 한 것으로 보이며 (지금은 릴리스되지 않을 수도 있음) 그들은 C #을 위해 roslyn에서 구현 할 수 있습니다-당신이 원하는 것으로 생각하면 투표하십시오. 가능한 구문을 제안 할 기회도 있습니다.


답변

에서 MSDN 페이지, 당신의 유일한 옵션은 명시 적으로 (주조에있는 것으로 보인다 var x = (byte)5), 또는 사용을 중지 var


답변

MSDN에 따라 10 진수, 16 진수 또는 2 진 리터럴을 사용하여 바이트를 선언 할 수 있습니다.

// decimal literal
byte x = 5;

// hex decimal literal
byte x = 0xC5;

// binary literal
byte x = 0b0000_0101;


답변