我正在尝试收集C#中发生装箱的所有情况:
将值类型转换为System.Object类型:
struct S { }
object box = new S();
Run Code Online (Sandbox Code Playgroud)将值类型转换为System.ValueType类型:
struct S { }
System.ValueType box = new S();
Run Code Online (Sandbox Code Playgroud)将枚举类型的值转换为System.Enum类型:
enum E { A }
System.Enum box = E.A;
Run Code Online (Sandbox Code Playgroud)将值类型转换为接口引用:
interface I { }
struct S : I { }
I box = new S();
Run Code Online (Sandbox Code Playgroud)在C#字符串连接中使用值类型:
char c = F();
string s1 = "char value will box" + c;
Run Code Online (Sandbox Code Playgroud)
注意:char类型的常量在编译时连接在一起
注意:由于6.0版的C#编译器优化串联涉及bool,char,IntPtr, …
有没有更简洁的方法来获取C#中枚举的char值.
public enum DivisionStatus
{
None = 'N',
Active = 'A',
Inactive = 'I',
Waitlist = 'W'
}
string status = Enums.DivisionStatus.Active.ToString()[0].ToString(); // "A"
Run Code Online (Sandbox Code Playgroud) 在我的代码中,我想处理在数据包中编码为一个符号的项目的文本名称.
在通常的情况下,对我1012来说意味着cat, dog, cat, frog,但是还有更多像这样的对,所以很难记住所有这些.有时他们需要改变,所以我认为我应该Dictionary<string, int>为此目的使用.但是之后…
switch (symbol)
{
case "0": { /* ... */ }
case "1": { /* ... */ }
case "2": { /* ... */ }
case "n": { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)
... ...变
switch (symbol)
{
case kvpDic["cat"]: { /* ... */ }
case kvpDic["dog"]: { /* ... */ }
case kvpDic["frog"]: { /* ... */ }
case kvpDic["something else"]: { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)
而工作室说我需要为我的开关使用常量. …
考虑以下两个枚举:
enum MyEnum1 {
Value1 = 1,
Value2 = 2,
Value3 = 3
}
enum MyEnum2 {
Value1 = 'a',
Value2 = 'b',
Value3 = 'c'
}
Run Code Online (Sandbox Code Playgroud)
我可以通过显式转换来检索由这些枚举值表示的物理值,((int)MyEnum1.Value2) == 2或者((char)MyEnum2.Value2) == 'b',但是如果我想在不首先知道要转换的类型的情况下获取char表示或int表示,该怎么办?
是否有可能在没有强制转换的情况下获取枚举的基础值,或者至少在编程上可以确定基础值的正确类型?
我需要枚举类型来定义在项目中使用的字母..NET框架中是否有这样的枚举类型?
这是一个在可能的提取值enum来Char[]?
我有Enum:
enum eTypeLanguage { typed = 'T', functional = 'F' }
Run Code Online (Sandbox Code Playgroud)
如何将值提取eTypeLanguage到Char数组?
c# ×6
enums ×4
.net ×2
boxing ×1
c#-4.0 ×1
casting ×1
char ×1
dictionary ×1
linq ×1
value-type ×1