小编Nib*_*Pig的帖子

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

我在哪里可以了解C#中普查员的来龙去脉?

是否有一个很好的资源可以解释枚举器和自定义枚举器的概念?特别是有一个很好的例子,说明为什么你想要IEnumerable自己实现以及如何有效地使用它?

我偶尔会碰到yield,我正试图更好地理解它.

.net c# ienumerable

7
推荐指数
1
解决办法
224
查看次数

Visual Studio中的项目位置不受信任错误

相当简单的错误,原因很明显 - 我映射了一个网络驱动器,我正在打开它的解决方案.Visual Studio给了我这个错误.

我试着谷歌搜索,令我惊讶的是,找不到修复.我正在运行Visual Studio 2008.

我在google上找到的解决方案说我应该运行Mscorcfg.msc,但不幸的是,我似乎没有在我的计算机上的任何地方使用该文件.我的控制面板中似乎也没有任何与.NET Framework相关的内容.我当然可以运行.NET应用程序,因此框架存在.

另一个解决方案建议运行caspol.exe,虽然这是.NET 2,我也尝试无效.

有任何想法吗?

我应该补充一点,我正在尝试将路径添加到任何可信列表中.

.net trust visual-studio-2008

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

7
推荐指数
2
解决办法
2763
查看次数

StringCompace的StringComparison类型的文化是否重要?

在C#中,您可以比较两个字符串String.Equals并提供a StringComparison.

我最近一直在寻找更新我古老的比较方法,ToLower()因为我读到它不适用于所有语言/文化.

从我所知道的,比较的类型来确定订单时,用包含列表面对ae以应首先出现(一些文化不同的东西订购).

有了string.Equals,订购并不重要.因此可以安全地假设许多选项是无关紧要的,只有[Ordinal]和[Ordinal] IgnoreCase很重要?

String.EqualsMSDN文章

comparisonType参数指示比较是应使用当前文化还是不变文化,是否尊重或忽略要比较的两个字符串的大小写,或使用单词或序数排序规则.

string.Equals(myString, theirString, StringComparison.OrdinalIgnoreCase)

我也有兴趣知道sort方法如何在内部工作,它是否用于String.Compare计算两个字符串的相对位置?

c#

7
推荐指数
1
解决办法
454
查看次数

无法使用带有VS2012的Monogame加载内容

我的代码是

new GameFont(Content.Load<SpriteFont>("LoadingFont"), "LoadingFont")

根据我所读到的,您必须使用VS2010将您的资产编译为.xnb格式,我已经完成了,并将它们放入bin目录中的Content子文件夹,我也做过.但是,我收到错误消息"无法加载LoadingFont资产!".

我不确定还能做什么.我读了一篇很老的帖子说使用XNA 4制作的资产不起作用,但我不知道是否仍然如此,或者如何将我的XNA版本更改为3.1.

有任何想法吗?也许没有使用VS2010会有更好的方法吗?

c# monogame

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

我如何使用JSON.NET处理有时是对象的值,有时候是对象的数组?

我注意到这个问题在stackoverflow上还有其他一些结果,但它们似乎不起作用或模糊不清.使用最流行的结果,我把这个放在一起:

问题是,当JSON回来并被序列化为我的一个自定义类型时,JSON中的一个有时是一个数组,有时只是一个字符串.如果我的自定义类型有一个字符串,并且JSON是一个数组,我会收到一个错误.反过来也是如此,如果JSON是一个对象而我的自定义类型是一个数组.它只是无法将其映射到属性.

我决定解决这个问题,我想覆盖这个特定属性的反序列化,如果它是一个对象,我想将它转换为一个1对象的数组.

在我序列化的对象中,我添加了一个JsonConverter,我认为它将覆盖它反序列化的方式.

[JsonConverter(typeof(ArrayOrSingleObjectConverter<string>))]
public List<string> person { get; set; }
Run Code Online (Sandbox Code Playgroud)

我们的想法是自定义转换器将单个对象转换为数组.因此,如果JSON为"Hello",则将person设置为包含"Hello"的List,而不是抛出异常,表示无法将字符串转换为List.

如果它已经是一个数组,它应该不管它.

转换器看起来像这样:

public class ArrayOrSingleObjectConverter<T> : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return true; // Not sure about this but technically it can accept an array or an object, so everything is game.
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (objectType == typeof(List<T>))
        {
            return serializer.Deserialize<List<T>>(reader);
        }
        else
        {
            var singleObject = serializer.Deserialize<T>(reader);
            var objectAsList = new List<T>(); …
Run Code Online (Sandbox Code Playgroud)

c# json.net json-deserialization

7
推荐指数
1
解决办法
3445
查看次数

在将Int64转换为Int32时,为什么C#让我溢出而没有任何错误或警告?它是如何进行转换的?

这个问题源于一个错误,我迭代了一个集合,Int64并意外地做了foreach (int i in myCollection).我试图调试令人困惑的问题,当我做一个linq查询,i不是一部分myCollection.

这里有一些令我惊讶的代码:

Int64 a = 12345678912345;

Console.Write((int)a);
Run Code Online (Sandbox Code Playgroud)

我希望编译器给我一个错误.通常的一个是隐式演员表不存在.但不,它根本不介意这一点.甚至没有警告!

(int)a偶然的输出值是1942903641.

我很想知道为什么演员在没有任何警告的情况下被允许,以及它是如何产生这个价值的.有任何想法吗?

c#

7
推荐指数
2
解决办法
395
查看次数

我可以从DataReader创建匿名类型集合吗?

我有这个代码:

var query = "SELECT * FROM Cats";

var conn = new SqlConnection(sqlConnectionString);

conn.Open();

var cmd = new SqlCommand(query);
var reader = cmd.ExecuteReader();

while (reader.Read())
{
    var CatName = reader.GetString(0);
    var CatDOB = reader.GetDateTime(1);
    var CatStatus = reader.GetInt32(2);
}
Run Code Online (Sandbox Code Playgroud)

我想将行拉出到一个匿名类型集合中,我通常使用LINQ进行迭代,但我不确定是否可能由于.Read()每次调用下一行所需的方式.

有没有办法做到这一点?

c# datareader

7
推荐指数
2
解决办法
3703
查看次数

是否可以使用匿名类型进行数据绑定?

我认为这是正确的术语......

基本上,我有一个转发器控件,以及一个检索一些项目的Linq查询.通常我会直接对查询进行数据绑定,并使用Eval用结果填充模板.

但是,它没有以完全正确的格式出现 - 例如,如果EndDate为null(它是一个DateTime?),那么我想用"Present"替换它.我在查询结果对象中只使用了几个属性.

我想知道是否有像这样的解决方案:

[pseudo madeup code]
var query = getResults();

List<anonymous> anonList = new List();

foreach (var q in query)
{
   string myEndDate = "";
   if (q.EndDate.HasValue) 
       { myEndDate = q.EndDate.ToString(); }
   else 
       { myEndDate = "Present"; }

   anonList.items.add(new { name=q.name, enddate=myEndDate };
}

repeater.Datasource = anonList;
Run Code Online (Sandbox Code Playgroud)

然后

<div><%#Eval("enddate")%></div>
Run Code Online (Sandbox Code Playgroud)

c# asp.net repeater

6
推荐指数
1
解决办法
1977
查看次数