我有一个包含enum
属性的类,在使用时序列化对象时JavaScriptSerializer
,我的json结果包含枚举的整数值而不是它的string
"name".有没有办法让枚举作为string
我的json而不必创建自定义JavaScriptConverter
?也许有一个属性,我可以装饰enum
定义,或对象属性,?
举个例子:
enum Gender { Male, Female }
class Person
{
int Age { get; set; }
Gender Gender { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
期望的json结果:
{ "Age": 35, "Gender": "Male" }
Run Code Online (Sandbox Code Playgroud) 写老派最有效的方法是什么:
StringBuilder sb = new StringBuilder();
if (strings.Count > 0)
{
foreach (string s in strings)
{
sb.Append(s + ", ");
}
sb.Remove(sb.Length - 2, 2);
}
return sb.ToString();
Run Code Online (Sandbox Code Playgroud)
......在LINQ?
我有一些代码,当它执行时,它抛出一个IndexOutOfRangeException
,说,
指数数组的边界之外.
这是什么意思,我能做些什么呢?
根据使用的类别,它也可以 ArgumentOutOfRangeException
mscorlib.dll中出现"System.ArgumentOutOfRangeException"类型的异常但未在用户代码中处理附加信息:索引超出范围.必须是非负数且小于集合的大小.
以下将导致==运算符重载方法的无限递归
Foo foo1 = null;
Foo foo2 = new Foo();
Assert.IsFalse(foo1 == foo2);
public static bool operator ==(Foo foo1, Foo foo2) {
if (foo1 == null) return foo2 == null;
return foo1.Equals(foo2);
}
Run Code Online (Sandbox Code Playgroud)
我如何检查空值?
string[]
查看它是否包含元素的最佳方法是什么.这是我的第一枪.但也许我有一些东西可以忽略.数组大小不超过200个元素.
bool isStringInArray(string[] strArray, string key)
{
for (int i = 0; i <= strArray.Length - 1; i++)
if (strArray[i] == key)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud) 我正在对枚举进行一些阅读,发现它们与声明常量非常相似.我怎么知道何时使用常量而不是枚举,反之亦然.使用枚举有哪些优点?
我使用带有可选参数的C#4.0遇到了另一个问题.
我如何调用一个函数(或者更确切地说是构造函数,我有ConstructorInfo
对象),我知道它不需要任何参数?
这是我现在使用的代码:
type.GetParameterlessConstructor()
.Invoke(BindingFlags.OptionalParamBinding |
BindingFlags.InvokeMethod |
BindingFlags.CreateInstance,
null,
new object[0],
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
(我刚试过不同的BindingFlags
).
GetParameterlessConstructor
是我写的自定义扩展方法Type
.
为什么打印1?
import java.util.*;
import java.lang.*;
import java.io.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
System.out.println((byte)+(short)-(int)+(long)-1);
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以混合铸造和+,-
一元操作员吗?我知道我们可以多次进行转换,但为什么不让+ ,-
一元运算符产生错误呢?
我知道java并且通常会放入getter/setter方法.我有兴趣使用以下代码在C#中执行此操作,但它会引发StackOverflow异常.我究竟做错了什么?
致电代码
c.firstName = "a";
Run Code Online (Sandbox Code Playgroud)
物业代码
public String firstName;
{
get
{
return firstName;
}
set
{
firstName = value;
}
}
Run Code Online (Sandbox Code Playgroud) 我想要一个Covariant集合,其项目可以通过索引检索.IEnumerable是我所知道的唯一.net集合,它是Covariant,但它没有这个索引支持.
具体来说,我想这样做:
List<Dog> dogs = new List<Dog>();
IEnumerable<Animal> animals = dogs;
IList<Animal> animalList = dogs; // This line does not compile
Run Code Online (Sandbox Code Playgroud)
现在,我知道为什么这是一个问题.List实现ICollection
具有Add方法.通过向上投射IList
动物,它将允许后续代码添加"真实" List<Dog>
集合中不允许的任何类型的动物.
那么有人知道一个支持索引查找的集合也是协变的吗?我想不创造自己的.