有没有办法指定我的变量是一个短整数?我正在寻找类似于M后缀的小数字.对于小数,我不必说
var d = (decimal)1.23;
Run Code Online (Sandbox Code Playgroud)
我可以写如下:
var d = 1.23M;
Run Code Online (Sandbox Code Playgroud)
有没有办法写这个
var s = SomeLiteralWithoutCast
Run Code Online (Sandbox Code Playgroud)
所以s暗示是短的int?
Tom*_*ski 118
简短回答,不.在C#中,没有S
可以使用的字母,因为var a = 123S
它表明它a
是类型的short
.有L
for long
,F
for float
,D
for double
,M
for decimal
,但不是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
Run Code Online (Sandbox Code Playgroud)
但不是
var a = 1S; // not possible, you must use (short)1;
Run Code Online (Sandbox Code Playgroud)
Eri*_*ert 24
这个问题有点令人困惑.我们来定义一些术语:
甲常量表达式被(粗略地说)编译器知道的一个表达式是一个特定的恒定值.
甲字面是一种特定类型的常量表达式; 123
并且Math.PI
都是常量表达式.前者是文字,后者不是.
甲常数字段是与一个常量表达式初始化的类型的成员,并且然后可以在其他地方用作常量表达式.Math.PI
是一个常数字段的例子.
甲本地恒定就像一个恒定的领域,但作用范围的块.(就像局部变量的范围是一个块.)
常量字段和局部常量需要明确说明其类型; 常量没有"var"形式.(这个想法令人不寒而栗;"const var"显然是矛盾的.)
局部变量不需要说明其类型; 可以从初始化程序推断出类型.这种局部变量称为"隐式类型局部变量".
所以你的问题是"有没有办法写一个short类型的文字常量表达式,可用于初始化short类型的隐式类型局部变量?"
不,那里没有.您可以显式键入局部变量:
short s1 = 123;
Run Code Online (Sandbox Code Playgroud)
您可以显式键入本地常量:
const short s2 = 123;
Run Code Online (Sandbox Code Playgroud)
或者你可以创建一个包含一个强制转换的常量表达式:
var s3 = (short)123;
Run Code Online (Sandbox Code Playgroud)
或者您可以使本地或字段常量并将其名称用于隐式类型本地的初始化程序:
var s4 = s2;
Run Code Online (Sandbox Code Playgroud)
但是没有办法绕过它; short
必须出现在某个地方,无论是在字段或本地声明中还是在演员表中.
Ant*_*ram 10
short
C#中的数据类型没有后缀.如果希望整数文字为short,则需要显式声明类型并提供范围内的文字.
short s = 123;
Run Code Online (Sandbox Code Playgroud)
两种选择; 既不理想:
删除var
,明确指定类型:
short s = 123;
Run Code Online (Sandbox Code Playgroud)使用强制转换语法(注意这是一个编译时操作,而不是运行时):
var s = (short)123;
Run Code Online (Sandbox Code Playgroud)这是指定文字短片的唯一选项.
归档时间: |
|
查看次数: |
27729 次 |
最近记录: |