有没有办法指定我的变量是一个短整数? 我正在寻找类似于M后缀的小数字。对于小数,我不必说
var d = (decimal)1.23;
我可以写如下:
var d = 1.23M;
有没有办法写这个
var s = SomeLiteralWithoutCast
所以s暗示是短的int?
答案 0 :(得分:115)
简短回答,否。在C#中,没有可用作S
的字母var a = 123S
,表明a
的类型为short
。 L
为long
,F
为float
,D
为double
,M
为decimal
,< strong>但不是S
。如果有的话会很好,但是没有。
var a = 1M; // decimal
var a = 1L; // long
var a = 1F; // float
var a = 1D; // double
var a = 1; // int
var a = 1U; // uint
var a = 1UL; // ulong
但不是
var a = 1S; // not possible, you must use (short)1;
答案 1 :(得分:24)
这个问题有点令人困惑。我们来定义一些术语:
常量表达式(粗略地说)是编译器已知的特定常量值的表达式。
literal 是一种特殊的常量表达式; 123
和Math.PI
都是常量表达式。前者是文字,后者不是。
常量字段是使用常量表达式初始化的类型的成员,然后可以在其他地方用作常量表达式。 Math.PI
是常量字段的示例。
局部常量就像一个常量字段,但是作用于一个块。 (就像局部变量的范围是一个块一样。)
需要常量字段和局部常量来明确说明其类型;常量没有“var”形式。 (这个想法令人不寒而栗;“const var”显然是矛盾的。)
不需要局部变量来说明其类型;可以从初始化程序推断出类型。这样的局部变量称为“隐式类型局部变量”。
所以你的问题是“有没有办法写一个short类型的文字常量表达式,可用于初始化short类型的隐式类型局部变量?”
不,没有。您可以显式键入局部变量:
short s1 = 123;
您可以显式键入本地常量:
const short s2 = 123;
或者你可以创建一个包含强制转换的常量表达式:
var s3 = (short)123;
或者您可以使局部或字段常量并将其名称用于隐式类型本地的初始值设定项:
var s4 = s2;
但是没有办法绕过它; short
必须在字段或本地声明或演员表中某处出现。
答案 2 :(得分:9)
C#中的short
数据类型没有后缀。如果希望整数文字为short,则需要显式声明类型并提供范围内的文字。
short s = 123;
答案 3 :(得分:8)
两种选择;既不理想:
删除var
,明确指定类型:
short s = 123;
使用强制转换语法(注意这是一个编译时操作,而不是运行时):
var s = (short)123;
这是指定文字短片的唯一选项。
答案 4 :(得分:2)
您可以使用以下内容:
var value = (short)123;
当然它没有意义,因为var的重点不是写类型。
答案 5 :(得分:0)