小编Ale*_*kov的帖子

.NET - 枚举的jSON序列化为字符串

我有一个包含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)

c# asp.net enums json javascriptserializer

1088
推荐指数
22
解决办法
42万
查看次数

使用LINQ连接字符串

写老派最有效的方法是什么:

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?

c# linq string-concatenation

333
推荐指数
12
解决办法
27万
查看次数

什么是IndexOutOfRangeException/ArgumentOutOfRangeException以及如何解决?

我有一些代码,当它执行时,它抛出一个IndexOutOfRangeException,说,

指数数组的边界之外.

这是什么意思,我能做些什么呢?

根据使用的类别,它也可以 ArgumentOutOfRangeException

mscorlib.dll中出现"System.ArgumentOutOfRangeException"类型的异常但未在用户代码中处理附加信息:索引超出范围.必须是非负数且小于集合的大小.

.net c# indexoutofrangeexception

178
推荐指数
4
解决办法
15万
查看次数

如何在没有无限递归的'=='运算符重载中检查空值?

以下将导致==运算符重载方法的无限递归

    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)

我如何检查空值?

.net c# operator-overloading

110
推荐指数
4
解决办法
6846
查看次数

字符串是否在数组中?

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# arrays string

98
推荐指数
5
解决办法
15万
查看次数

枚举和常量.哪个用的?

我正在对枚举进行一些阅读,发现它们与声明常量非常相似.我怎么知道何时使用常量而不是枚举,反之亦然.使用枚举有哪些优点?

c# language-agnostic enums

91
推荐指数
5
解决办法
6万
查看次数

通过反射调用带有可选参数的方法

我使用带有可选参数的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.

.net c# reflection invoke default-value

55
推荐指数
2
解决办法
2万
查看次数

为什么混合+和强制转换不会在"+(int)+(long)-1"中产生错误?

为什么打印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

53
推荐指数
4
解决办法
4104
查看次数

为什么Property Set会抛出StackOverflow异常?

我知道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)

c#

49
推荐指数
2
解决办法
4万
查看次数

协方差和IList

我想要一个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>集合中不允许的任何类型的动物.

那么有人知道一个支持索引查找的集合也是协变的吗?我想不创造自己的.

.net c# .net-4.0 covariance

47
推荐指数
3
解决办法
7466
查看次数