کلمه کلیدی sbyte نشاندهنده یک نوع صحیح است که مقادیر را طبق شرایط زیر ذخیره می کند.
- نوع: sbyte
- محدوده: 128- تا 127
- اندازه: صحیح علامت دار 8-بیتی
- نوع دات نتی: System.SByte
لیترال ها
شما می توانید متغیرهای sbyte را بصورت زیر اعلان و مقداردهی اولیه کنید.
sbyte sByte1 = 127;
در اعلان بالا ، لیترال صحیح 127 بطور ضمنی از int به sbyte تبدیل شده است. اگر لیترال صحیح از محدوده sbyte تجاوز کند، یک خطای کامپایل رخ می دهد.
درهنگام استفاده از متد های overload شده باید از عملگر قالبریز (cast) استفاده شود. برای مثال، متدهای overload شده زیر را که از پارامترهای sbyte و int استفاده می کنند را در نظر بگیرید:
public static void SampleMethod(int i) {} public static void SampleMethod(sbyte b) {}
استفاده از قالبریز sbyte تضمین می کند که نوع درست فراخوانی خواهد شد. برای مثال:
// Calling the method with the int parameter: SampleMethod(5); // Calling the method with the sbyte parameter: SampleMethod((sbyte)5);
تبدیلات
از نوع sbyte به short، int، long، float، double، یا decimal تبدیل ضمنی از پیش تعریف شده وجود دارد.
شما نمی توانید نوع های عددی غیرلیترالی که اندازه بزرگتری نسبت به sbyte دارند را بصورت ضمنی به sbyte تبدیل کنید. برای مثال دو متغیر sbyte زیر را در نظر بگیرید:
sbyte x = 10, y = 20;
بیان انتساب زیر یک خطای کامپایل تولید خواهد کرد، زیرا عبارت محاسباتی سمت راست عملگر انتساب (=) بصورت پیش فرض به int ارزیابی می شود.
sbyte z = x + y; // Error: conversion from int to sbyte
برای حل این مشکل، عبارت را بصورت زیر قالبریزی کنید:
sbyte z = (sbyte)(x + y); // OK: explicit conversion
هرچند ممکن است از بیان های زیر که متغیر مقصد، اندازه مساوی یا بزرگتری دارند استفاده کنید:
sbyte x = 10, y = 20; int m = x + y; long n = x + y;
همچنین دقت کنید که هیچ تبدیل ضمنی ای از نوع های ممیز-شناور به sbyte وجود ندارد. برای مثال، بیان زیر تا زمانی که یک قالبریز صریح استفاده نشود، خطای کامپایل تولید می کند:
sbyte x = 3.0; // Error: no implicit conversion from double sbyte y = (sbyte)3.0; // OK: explicit conversion